test_delitem.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import pytest
  2. from pandas import (
  3. Index,
  4. Series,
  5. date_range,
  6. )
  7. import pandas._testing as tm
  8. class TestSeriesDelItem:
  9. def test_delitem(self):
  10. # GH#5542
  11. # should delete the item inplace
  12. s = Series(range(5))
  13. del s[0]
  14. expected = Series(range(1, 5), index=range(1, 5))
  15. tm.assert_series_equal(s, expected)
  16. del s[1]
  17. expected = Series(range(2, 5), index=range(2, 5))
  18. tm.assert_series_equal(s, expected)
  19. # only 1 left, del, add, del
  20. s = Series(1)
  21. del s[0]
  22. tm.assert_series_equal(s, Series(dtype="int64", index=Index([], dtype="int64")))
  23. s[0] = 1
  24. tm.assert_series_equal(s, Series(1))
  25. del s[0]
  26. tm.assert_series_equal(s, Series(dtype="int64", index=Index([], dtype="int64")))
  27. def test_delitem_object_index(self):
  28. # Index(dtype=object)
  29. s = Series(1, index=["a"])
  30. del s["a"]
  31. tm.assert_series_equal(
  32. s, Series(dtype="int64", index=Index([], dtype="object"))
  33. )
  34. s["a"] = 1
  35. tm.assert_series_equal(s, Series(1, index=["a"]))
  36. del s["a"]
  37. tm.assert_series_equal(
  38. s, Series(dtype="int64", index=Index([], dtype="object"))
  39. )
  40. def test_delitem_missing_key(self):
  41. # empty
  42. s = Series(dtype=object)
  43. with pytest.raises(KeyError, match=r"^0$"):
  44. del s[0]
  45. def test_delitem_extension_dtype(self):
  46. # GH#40386
  47. # DatetimeTZDtype
  48. dti = date_range("2016-01-01", periods=3, tz="US/Pacific")
  49. ser = Series(dti)
  50. expected = ser[[0, 2]]
  51. del ser[1]
  52. assert ser.dtype == dti.dtype
  53. tm.assert_series_equal(ser, expected)
  54. # PeriodDtype
  55. pi = dti.tz_localize(None).to_period("D")
  56. ser = Series(pi)
  57. expected = ser[:2]
  58. del ser[2]
  59. assert ser.dtype == pi.dtype
  60. tm.assert_series_equal(ser, expected)