Skip to content

Commit a7c0494

Browse files
authored
TST/REF: collect base tests by method (#37549)
1 parent 3e25a36 commit a7c0494

File tree

6 files changed

+104
-104
lines changed

6 files changed

+104
-104
lines changed

pandas/tests/base/test_drop_duplicates.py

-31
This file was deleted.

pandas/tests/base/test_misc.py

+2-55
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@
55

66
from pandas.compat import IS64, PYPY
77

8-
from pandas.core.dtypes.common import (
9-
is_categorical_dtype,
10-
is_datetime64_dtype,
11-
is_datetime64tz_dtype,
12-
is_object_dtype,
13-
)
8+
from pandas.core.dtypes.common import is_categorical_dtype, is_object_dtype
149

1510
import pandas as pd
16-
from pandas import DataFrame, Index, IntervalIndex, Series
11+
from pandas import DataFrame, Index, Series
1712

1813

1914
@pytest.mark.parametrize(
@@ -42,54 +37,6 @@ def test_binary_ops_docstring(klass, op_name, op):
4237
assert expected_str in getattr(klass, "r" + op_name).__doc__
4338

4439

45-
def test_none_comparison(series_with_simple_index):
46-
series = series_with_simple_index
47-
if isinstance(series.index, IntervalIndex):
48-
# IntervalIndex breaks on "series[0] = np.nan" below
49-
pytest.skip("IntervalIndex doesn't support assignment")
50-
if len(series) < 1:
51-
pytest.skip("Test doesn't make sense on empty data")
52-
53-
# bug brought up by #1079
54-
# changed from TypeError in 0.17.0
55-
series[0] = np.nan
56-
57-
# noinspection PyComparisonWithNone
58-
result = series == None # noqa
59-
assert not result.iat[0]
60-
assert not result.iat[1]
61-
62-
# noinspection PyComparisonWithNone
63-
result = series != None # noqa
64-
assert result.iat[0]
65-
assert result.iat[1]
66-
67-
result = None == series # noqa
68-
assert not result.iat[0]
69-
assert not result.iat[1]
70-
71-
result = None != series # noqa
72-
assert result.iat[0]
73-
assert result.iat[1]
74-
75-
if is_datetime64_dtype(series.dtype) or is_datetime64tz_dtype(series.dtype):
76-
# Following DatetimeIndex (and Timestamp) convention,
77-
# inequality comparisons with Series[datetime64] raise
78-
msg = "Invalid comparison"
79-
with pytest.raises(TypeError, match=msg):
80-
None > series
81-
with pytest.raises(TypeError, match=msg):
82-
series > None
83-
else:
84-
result = None > series
85-
assert not result.iat[0]
86-
assert not result.iat[1]
87-
88-
result = series < None
89-
assert not result.iat[0]
90-
assert not result.iat[1]
91-
92-
9340
def test_ndarray_compat_properties(index_or_series_obj):
9441
obj = index_or_series_obj
9542

pandas/tests/frame/methods/test_drop_duplicates.py

+26-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
from datetime import datetime
12
import re
23

34
import numpy as np
45
import pytest
56

6-
from pandas import DataFrame
7+
from pandas import DataFrame, NaT
78
import pandas._testing as tm
89

910

@@ -434,3 +435,27 @@ def test_drop_duplicates_null_in_object_column(nulls_fixture):
434435
df = DataFrame([[1, nulls_fixture], [2, "a"]], dtype=object)
435436
result = df.drop_duplicates()
436437
tm.assert_frame_equal(result, df)
438+
439+
440+
@pytest.mark.parametrize("keep", ["first", "last", False])
441+
def test_drop_duplicates_series_vs_dataframe(keep):
442+
# GH#14192
443+
df = DataFrame(
444+
{
445+
"a": [1, 1, 1, "one", "one"],
446+
"b": [2, 2, np.nan, np.nan, np.nan],
447+
"c": [3, 3, np.nan, np.nan, "three"],
448+
"d": [1, 2, 3, 4, 4],
449+
"e": [
450+
datetime(2015, 1, 1),
451+
datetime(2015, 1, 1),
452+
datetime(2015, 2, 1),
453+
NaT,
454+
NaT,
455+
],
456+
}
457+
)
458+
for column in df.columns:
459+
dropped_frame = df[[column]].drop_duplicates(keep=keep)
460+
dropped_series = df[column].drop_duplicates(keep=keep)
461+
tm.assert_frame_equal(dropped_frame, dropped_series.to_frame())

pandas/tests/frame/methods/test_to_dict_of_blocks.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import numpy as np
22

3-
from pandas import DataFrame
3+
from pandas import DataFrame, MultiIndex
4+
import pandas._testing as tm
45
from pandas.core.arrays import PandasArray
56

67

@@ -50,3 +51,17 @@ def test_to_dict_of_blocks_item_cache():
5051
assert df.loc[0, "b"] == "foo"
5152

5253
assert df["b"] is ser
54+
55+
56+
def test_set_change_dtype_slice():
57+
# GH#8850
58+
cols = MultiIndex.from_tuples([("1st", "a"), ("2nd", "b"), ("3rd", "c")])
59+
df = DataFrame([[1.0, 2, 3], [4.0, 5, 6]], columns=cols)
60+
df["2nd"] = df["2nd"] * 2.0
61+
62+
blocks = df._to_dict_of_blocks()
63+
assert sorted(blocks.keys()) == ["float64", "int64"]
64+
tm.assert_frame_equal(
65+
blocks["float64"], DataFrame([[1.0, 4.0], [4.0, 10.0]], columns=cols[:2])
66+
)
67+
tm.assert_frame_equal(blocks["int64"], DataFrame([[3], [6]], columns=cols[2:]))

pandas/tests/internals/test_internals.py

+1-15
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from pandas._libs.internals import BlockPlacement
99

1010
import pandas as pd
11-
from pandas import Categorical, DataFrame, DatetimeIndex, Index, MultiIndex, Series
11+
from pandas import Categorical, DataFrame, DatetimeIndex, Index, Series
1212
import pandas._testing as tm
1313
import pandas.core.algorithms as algos
1414
from pandas.core.arrays import DatetimeArray, SparseArray, TimedeltaArray
@@ -1152,20 +1152,6 @@ def test_missing_unicode_key():
11521152
df.loc[:, "\u05d0"] # should not raise UnicodeEncodeError
11531153

11541154

1155-
def test_set_change_dtype_slice():
1156-
# GH#8850
1157-
cols = MultiIndex.from_tuples([("1st", "a"), ("2nd", "b"), ("3rd", "c")])
1158-
df = DataFrame([[1.0, 2, 3], [4.0, 5, 6]], columns=cols)
1159-
df["2nd"] = df["2nd"] * 2.0
1160-
1161-
blocks = df._to_dict_of_blocks()
1162-
assert sorted(blocks.keys()) == ["float64", "int64"]
1163-
tm.assert_frame_equal(
1164-
blocks["float64"], DataFrame([[1.0, 4.0], [4.0, 10.0]], columns=cols[:2])
1165-
)
1166-
tm.assert_frame_equal(blocks["int64"], DataFrame([[3], [6]], columns=cols[2:]))
1167-
1168-
11691155
def test_single_block_manager_fastpath_deprecated():
11701156
# GH#33092
11711157
ser = Series(range(3))

pandas/tests/series/test_arithmetic.py

+59-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,18 @@
77

88
from pandas._libs.tslibs import IncompatibleFrequency
99

10+
from pandas.core.dtypes.common import is_datetime64_dtype, is_datetime64tz_dtype
11+
1012
import pandas as pd
11-
from pandas import Categorical, Index, Series, bdate_range, date_range, isna
13+
from pandas import (
14+
Categorical,
15+
Index,
16+
IntervalIndex,
17+
Series,
18+
bdate_range,
19+
date_range,
20+
isna,
21+
)
1222
import pandas._testing as tm
1323
from pandas.core import nanops, ops
1424

@@ -779,3 +789,51 @@ def test_binop_maybe_preserve_name(self, datetime_series):
779789
def test_scalarop_preserve_name(self, datetime_series):
780790
result = datetime_series * 2
781791
assert result.name == datetime_series.name
792+
793+
794+
def test_none_comparison(series_with_simple_index):
795+
series = series_with_simple_index
796+
if isinstance(series.index, IntervalIndex):
797+
# IntervalIndex breaks on "series[0] = np.nan" below
798+
pytest.skip("IntervalIndex doesn't support assignment")
799+
if len(series) < 1:
800+
pytest.skip("Test doesn't make sense on empty data")
801+
802+
# bug brought up by #1079
803+
# changed from TypeError in 0.17.0
804+
series[0] = np.nan
805+
806+
# noinspection PyComparisonWithNone
807+
result = series == None # noqa
808+
assert not result.iat[0]
809+
assert not result.iat[1]
810+
811+
# noinspection PyComparisonWithNone
812+
result = series != None # noqa
813+
assert result.iat[0]
814+
assert result.iat[1]
815+
816+
result = None == series # noqa
817+
assert not result.iat[0]
818+
assert not result.iat[1]
819+
820+
result = None != series # noqa
821+
assert result.iat[0]
822+
assert result.iat[1]
823+
824+
if is_datetime64_dtype(series.dtype) or is_datetime64tz_dtype(series.dtype):
825+
# Following DatetimeIndex (and Timestamp) convention,
826+
# inequality comparisons with Series[datetime64] raise
827+
msg = "Invalid comparison"
828+
with pytest.raises(TypeError, match=msg):
829+
None > series
830+
with pytest.raises(TypeError, match=msg):
831+
series > None
832+
else:
833+
result = None > series
834+
assert not result.iat[0]
835+
assert not result.iat[1]
836+
837+
result = series < None
838+
assert not result.iat[0]
839+
assert not result.iat[1]

0 commit comments

Comments
 (0)