123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import numpy as np
- import pytest
- from pandas import (
- DatetimeIndex,
- IntervalIndex,
- NaT,
- Period,
- Series,
- Timestamp,
- )
- import pandas._testing as tm
- class TestDropna:
- def test_dropna_empty(self):
- ser = Series([], dtype=object)
- assert len(ser.dropna()) == 0
- return_value = ser.dropna(inplace=True)
- assert return_value is None
- assert len(ser) == 0
- # invalid axis
- msg = "No axis named 1 for object type Series"
- with pytest.raises(ValueError, match=msg):
- ser.dropna(axis=1)
- def test_dropna_preserve_name(self, datetime_series):
- datetime_series[:5] = np.nan
- result = datetime_series.dropna()
- assert result.name == datetime_series.name
- name = datetime_series.name
- ts = datetime_series.copy()
- return_value = ts.dropna(inplace=True)
- assert return_value is None
- assert ts.name == name
- def test_dropna_no_nan(self):
- for ser in [
- Series([1, 2, 3], name="x"),
- Series([False, True, False], name="x"),
- ]:
- result = ser.dropna()
- tm.assert_series_equal(result, ser)
- assert result is not ser
- s2 = ser.copy()
- return_value = s2.dropna(inplace=True)
- assert return_value is None
- tm.assert_series_equal(s2, ser)
- def test_dropna_intervals(self):
- ser = Series(
- [np.nan, 1, 2, 3],
- IntervalIndex.from_arrays([np.nan, 0, 1, 2], [np.nan, 1, 2, 3]),
- )
- result = ser.dropna()
- expected = ser.iloc[1:]
- tm.assert_series_equal(result, expected)
- def test_dropna_period_dtype(self):
- # GH#13737
- ser = Series([Period("2011-01", freq="M"), Period("NaT", freq="M")])
- result = ser.dropna()
- expected = Series([Period("2011-01", freq="M")])
- tm.assert_series_equal(result, expected)
- def test_datetime64_tz_dropna(self):
- # DatetimeLikeBlock
- ser = Series(
- [
- Timestamp("2011-01-01 10:00"),
- NaT,
- Timestamp("2011-01-03 10:00"),
- NaT,
- ]
- )
- result = ser.dropna()
- expected = Series(
- [Timestamp("2011-01-01 10:00"), Timestamp("2011-01-03 10:00")], index=[0, 2]
- )
- tm.assert_series_equal(result, expected)
- # DatetimeTZBlock
- idx = DatetimeIndex(
- ["2011-01-01 10:00", NaT, "2011-01-03 10:00", NaT], tz="Asia/Tokyo"
- )
- ser = Series(idx)
- assert ser.dtype == "datetime64[ns, Asia/Tokyo]"
- result = ser.dropna()
- expected = Series(
- [
- Timestamp("2011-01-01 10:00", tz="Asia/Tokyo"),
- Timestamp("2011-01-03 10:00", tz="Asia/Tokyo"),
- ],
- index=[0, 2],
- )
- assert result.dtype == "datetime64[ns, Asia/Tokyo]"
- tm.assert_series_equal(result, expected)
- @pytest.mark.parametrize("val", [1, 1.5])
- def test_dropna_ignore_index(self, val):
- # GH#31725
- ser = Series([1, 2, val], index=[3, 2, 1])
- result = ser.dropna(ignore_index=True)
- expected = Series([1, 2, val])
- tm.assert_series_equal(result, expected)
- ser.dropna(ignore_index=True, inplace=True)
- tm.assert_series_equal(ser, expected)
|