Skip to content

Commit 08f4a9c

Browse files
jbrockmendelroberthdevries
authored andcommitted
REF: misplaced Series.combine_first tests (pandas-dev#32111)
1 parent 75b7cb1 commit 08f4a9c

File tree

3 files changed

+77
-76
lines changed

3 files changed

+77
-76
lines changed

pandas/tests/series/methods/test_combine_first.py

+76-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
from datetime import datetime
2+
13
import numpy as np
24

3-
from pandas import Period, Series, date_range, period_range
5+
import pandas as pd
6+
from pandas import Period, Series, date_range, period_range, to_datetime
47
import pandas._testing as tm
58

69

@@ -17,3 +20,75 @@ def test_combine_first_period_datetime(self):
1720
result = a.combine_first(b)
1821
expected = Series([1, 9, 9, 4, 5, 9, 7], index=idx, dtype=np.float64)
1922
tm.assert_series_equal(result, expected)
23+
24+
def test_combine_first_name(self, datetime_series):
25+
result = datetime_series.combine_first(datetime_series[:5])
26+
assert result.name == datetime_series.name
27+
28+
def test_combine_first(self):
29+
values = tm.makeIntIndex(20).values.astype(float)
30+
series = Series(values, index=tm.makeIntIndex(20))
31+
32+
series_copy = series * 2
33+
series_copy[::2] = np.NaN
34+
35+
# nothing used from the input
36+
combined = series.combine_first(series_copy)
37+
38+
tm.assert_series_equal(combined, series)
39+
40+
# Holes filled from input
41+
combined = series_copy.combine_first(series)
42+
assert np.isfinite(combined).all()
43+
44+
tm.assert_series_equal(combined[::2], series[::2])
45+
tm.assert_series_equal(combined[1::2], series_copy[1::2])
46+
47+
# mixed types
48+
index = tm.makeStringIndex(20)
49+
floats = Series(tm.randn(20), index=index)
50+
strings = Series(tm.makeStringIndex(10), index=index[::2])
51+
52+
combined = strings.combine_first(floats)
53+
54+
tm.assert_series_equal(strings, combined.loc[index[::2]])
55+
tm.assert_series_equal(floats[1::2].astype(object), combined.loc[index[1::2]])
56+
57+
# corner case
58+
ser = Series([1.0, 2, 3], index=[0, 1, 2])
59+
empty = Series([], index=[], dtype=object)
60+
result = ser.combine_first(empty)
61+
ser.index = ser.index.astype("O")
62+
tm.assert_series_equal(ser, result)
63+
64+
def test_combine_first_dt64(self):
65+
66+
s0 = to_datetime(Series(["2010", np.NaN]))
67+
s1 = to_datetime(Series([np.NaN, "2011"]))
68+
rs = s0.combine_first(s1)
69+
xp = to_datetime(Series(["2010", "2011"]))
70+
tm.assert_series_equal(rs, xp)
71+
72+
s0 = to_datetime(Series(["2010", np.NaN]))
73+
s1 = Series([np.NaN, "2011"])
74+
rs = s0.combine_first(s1)
75+
xp = Series([datetime(2010, 1, 1), "2011"])
76+
tm.assert_series_equal(rs, xp)
77+
78+
def test_combine_first_dt_tz_values(self, tz_naive_fixture):
79+
ser1 = pd.Series(
80+
pd.DatetimeIndex(["20150101", "20150102", "20150103"], tz=tz_naive_fixture),
81+
name="ser1",
82+
)
83+
ser2 = pd.Series(
84+
pd.DatetimeIndex(["20160514", "20160515", "20160516"], tz=tz_naive_fixture),
85+
index=[2, 3, 4],
86+
name="ser2",
87+
)
88+
result = ser1.combine_first(ser2)
89+
exp_vals = pd.DatetimeIndex(
90+
["20150101", "20150102", "20150103", "20160515", "20160516"],
91+
tz=tz_naive_fixture,
92+
)
93+
exp = pd.Series(exp_vals, name="ser1")
94+
tm.assert_series_equal(exp, result)

pandas/tests/series/test_api.py

-4
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,6 @@ def test_binop_maybe_preserve_name(self, datetime_series):
8585
result = getattr(s, op)(cp)
8686
assert result.name is None
8787

88-
def test_combine_first_name(self, datetime_series):
89-
result = datetime_series.combine_first(datetime_series[:5])
90-
assert result.name == datetime_series.name
91-
9288
def test_getitem_preserve_name(self, datetime_series):
9389
result = datetime_series[datetime_series > 0]
9490
assert result.name == datetime_series.name

pandas/tests/series/test_combine_concat.py

+1-71
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
from datetime import datetime
2-
31
import numpy as np
42
import pytest
53

64
import pandas as pd
7-
from pandas import DataFrame, Series, to_datetime
5+
from pandas import DataFrame, Series
86
import pandas._testing as tm
97

108

@@ -22,42 +20,6 @@ def test_combine_scalar(self):
2220
expected = pd.Series([min(i * 10, 22) for i in range(5)])
2321
tm.assert_series_equal(result, expected)
2422

25-
def test_combine_first(self):
26-
values = tm.makeIntIndex(20).values.astype(float)
27-
series = Series(values, index=tm.makeIntIndex(20))
28-
29-
series_copy = series * 2
30-
series_copy[::2] = np.NaN
31-
32-
# nothing used from the input
33-
combined = series.combine_first(series_copy)
34-
35-
tm.assert_series_equal(combined, series)
36-
37-
# Holes filled from input
38-
combined = series_copy.combine_first(series)
39-
assert np.isfinite(combined).all()
40-
41-
tm.assert_series_equal(combined[::2], series[::2])
42-
tm.assert_series_equal(combined[1::2], series_copy[1::2])
43-
44-
# mixed types
45-
index = tm.makeStringIndex(20)
46-
floats = Series(tm.randn(20), index=index)
47-
strings = Series(tm.makeStringIndex(10), index=index[::2])
48-
49-
combined = strings.combine_first(floats)
50-
51-
tm.assert_series_equal(strings, combined.loc[index[::2]])
52-
tm.assert_series_equal(floats[1::2].astype(object), combined.loc[index[1::2]])
53-
54-
# corner case
55-
s = Series([1.0, 2, 3], index=[0, 1, 2])
56-
empty = Series([], index=[], dtype=object)
57-
result = s.combine_first(empty)
58-
s.index = s.index.astype("O")
59-
tm.assert_series_equal(s, result)
60-
6123
def test_update(self):
6224
s = Series([1.5, np.nan, 3.0, 4.0, np.nan])
6325
s2 = Series([np.nan, 3.5, np.nan, 5.0])
@@ -156,24 +118,6 @@ def get_result_type(dtype, dtype2):
156118
result = pd.concat([Series(dtype=dtype), Series(dtype=dtype2)]).dtype
157119
assert result.kind == expected
158120

159-
def test_combine_first_dt_tz_values(self, tz_naive_fixture):
160-
ser1 = pd.Series(
161-
pd.DatetimeIndex(["20150101", "20150102", "20150103"], tz=tz_naive_fixture),
162-
name="ser1",
163-
)
164-
ser2 = pd.Series(
165-
pd.DatetimeIndex(["20160514", "20160515", "20160516"], tz=tz_naive_fixture),
166-
index=[2, 3, 4],
167-
name="ser2",
168-
)
169-
result = ser1.combine_first(ser2)
170-
exp_vals = pd.DatetimeIndex(
171-
["20150101", "20150102", "20150103", "20160515", "20160516"],
172-
tz=tz_naive_fixture,
173-
)
174-
exp = pd.Series(exp_vals, name="ser1")
175-
tm.assert_series_equal(exp, result)
176-
177121
def test_concat_empty_series_dtypes(self):
178122

179123
# booleans
@@ -250,17 +194,3 @@ def test_concat_empty_series_dtypes(self):
250194
# TODO: release-note: concat sparse dtype
251195
expected = pd.SparseDtype("object")
252196
assert result.dtype == expected
253-
254-
def test_combine_first_dt64(self):
255-
256-
s0 = to_datetime(Series(["2010", np.NaN]))
257-
s1 = to_datetime(Series([np.NaN, "2011"]))
258-
rs = s0.combine_first(s1)
259-
xp = to_datetime(Series(["2010", "2011"]))
260-
tm.assert_series_equal(rs, xp)
261-
262-
s0 = to_datetime(Series(["2010", np.NaN]))
263-
s1 = Series([np.NaN, "2011"])
264-
rs = s0.combine_first(s1)
265-
xp = Series([datetime(2010, 1, 1), "2011"])
266-
tm.assert_series_equal(rs, xp)

0 commit comments

Comments
 (0)