test_item.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. """
  2. Series.item method, mainly testing that we get python scalars as opposed to
  3. numpy scalars.
  4. """
  5. import pytest
  6. from pandas import (
  7. Series,
  8. Timedelta,
  9. Timestamp,
  10. date_range,
  11. )
  12. class TestItem:
  13. def test_item(self):
  14. # We are testing that we get python scalars as opposed to numpy scalars
  15. ser = Series([1])
  16. result = ser.item()
  17. assert result == 1
  18. assert result == ser.iloc[0]
  19. assert isinstance(result, int) # i.e. not np.int64
  20. ser = Series([0.5], index=[3])
  21. result = ser.item()
  22. assert isinstance(result, float)
  23. assert result == 0.5
  24. ser = Series([1, 2])
  25. msg = "can only convert an array of size 1"
  26. with pytest.raises(ValueError, match=msg):
  27. ser.item()
  28. dti = date_range("2016-01-01", periods=2)
  29. with pytest.raises(ValueError, match=msg):
  30. dti.item()
  31. with pytest.raises(ValueError, match=msg):
  32. Series(dti).item()
  33. val = dti[:1].item()
  34. assert isinstance(val, Timestamp)
  35. val = Series(dti)[:1].item()
  36. assert isinstance(val, Timestamp)
  37. tdi = dti - dti
  38. with pytest.raises(ValueError, match=msg):
  39. tdi.item()
  40. with pytest.raises(ValueError, match=msg):
  41. Series(tdi).item()
  42. val = tdi[:1].item()
  43. assert isinstance(val, Timedelta)
  44. val = Series(tdi)[:1].item()
  45. assert isinstance(val, Timedelta)
  46. # Case where ser[0] would not work
  47. ser = Series(dti, index=[5, 6])
  48. val = ser.iloc[:1].item()
  49. assert val == dti[0]