Skip to content

Commit 9c2fcf7

Browse files
jbrockmendelJulianWgs
authored andcommitted
REF/TST: collect reindex tests (pandas-dev#37283)
* REF/TST: move non-reindex tests from test_axis_select_reindex.py * REF: rename test_axis_select_reindex -> methods/test_index
1 parent 0d574a5 commit 9c2fcf7

File tree

7 files changed

+121
-115
lines changed

7 files changed

+121
-115
lines changed

pandas/tests/frame/methods/test_align.py

+28-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,39 @@
11
import numpy as np
22
import pytest
3+
import pytz
34

45
import pandas as pd
5-
from pandas import DataFrame, Index, Series
6+
from pandas import DataFrame, Index, Series, date_range
67
import pandas._testing as tm
78

89

910
class TestDataFrameAlign:
11+
def test_frame_align_aware(self):
12+
idx1 = date_range("2001", periods=5, freq="H", tz="US/Eastern")
13+
idx2 = date_range("2001", periods=5, freq="2H", tz="US/Eastern")
14+
df1 = DataFrame(np.random.randn(len(idx1), 3), idx1)
15+
df2 = DataFrame(np.random.randn(len(idx2), 3), idx2)
16+
new1, new2 = df1.align(df2)
17+
assert df1.index.tz == new1.index.tz
18+
assert df2.index.tz == new2.index.tz
19+
20+
# different timezones convert to UTC
21+
22+
# frame with frame
23+
df1_central = df1.tz_convert("US/Central")
24+
new1, new2 = df1.align(df1_central)
25+
assert new1.index.tz == pytz.UTC
26+
assert new2.index.tz == pytz.UTC
27+
28+
# frame with Series
29+
new1, new2 = df1.align(df1_central[0], axis=0)
30+
assert new1.index.tz == pytz.UTC
31+
assert new2.index.tz == pytz.UTC
32+
33+
df1[0].align(df1_central, axis=0)
34+
assert new1.index.tz == pytz.UTC
35+
assert new2.index.tz == pytz.UTC
36+
1037
def test_align_float(self, float_frame):
1138
af, bf = float_frame.align(float_frame)
1239
assert af._mgr is not float_frame._mgr

pandas/tests/frame/test_axis_select_reindex.py renamed to pandas/tests/frame/methods/test_reindex.py

+1-39
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,14 @@
44
import pytest
55

66
import pandas as pd
7-
from pandas import Categorical, DataFrame, Index, MultiIndex, Series, date_range, isna
7+
from pandas import Categorical, DataFrame, Index, Series, date_range, isna
88
import pandas._testing as tm
99

1010

1111
class TestDataFrameSelectReindex:
1212
# These are specific reindex-based tests; other indexing tests should go in
1313
# test_indexing
1414

15-
def test_merge_join_different_levels(self):
16-
# GH 9455
17-
18-
# first dataframe
19-
df1 = DataFrame(columns=["a", "b"], data=[[1, 11], [0, 22]])
20-
21-
# second dataframe
22-
columns = MultiIndex.from_tuples([("a", ""), ("c", "c1")])
23-
df2 = DataFrame(columns=columns, data=[[1, 33], [0, 44]])
24-
25-
# merge
26-
columns = ["a", "b", ("c", "c1")]
27-
expected = DataFrame(columns=columns, data=[[1, 11, 33], [0, 22, 44]])
28-
with tm.assert_produces_warning(UserWarning):
29-
result = pd.merge(df1, df2, on="a")
30-
tm.assert_frame_equal(result, expected)
31-
32-
# join, see discussion in GH 12219
33-
columns = ["a", "b", ("a", ""), ("c", "c1")]
34-
expected = DataFrame(columns=columns, data=[[1, 11, 0, 44], [0, 22, 1, 33]])
35-
with tm.assert_produces_warning(UserWarning):
36-
result = df1.join(df2, on="a")
37-
tm.assert_frame_equal(result, expected)
38-
3915
def test_reindex(self, float_frame):
4016
datetime_series = tm.makeTimeSeries(nper=30)
4117

@@ -382,20 +358,6 @@ def test_reindex_api_equivalence(self):
382358
for res in [res2, res3]:
383359
tm.assert_frame_equal(res1, res)
384360

385-
def test_align_int_fill_bug(self):
386-
# GH #910
387-
X = np.arange(10 * 10, dtype="float64").reshape(10, 10)
388-
Y = np.ones((10, 1), dtype=int)
389-
390-
df1 = DataFrame(X)
391-
df1["0.X"] = Y.squeeze()
392-
393-
df2 = df1.astype(float)
394-
395-
result = df1 - df1.mean()
396-
expected = df2 - df2.mean()
397-
tm.assert_frame_equal(result, expected)
398-
399361
def test_reindex_boolean(self):
400362
frame = DataFrame(
401363
np.ones((10, 2), dtype=bool), index=np.arange(0, 20, 2), columns=[0, 2]
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import numpy as np
2+
3+
from pandas import DataFrame, Timestamp, date_range
4+
import pandas._testing as tm
5+
6+
7+
class TestDataFrameValues:
8+
def test_values_duplicates(self):
9+
df = DataFrame(
10+
[[1, 2, "a", "b"], [1, 2, "a", "b"]], columns=["one", "one", "two", "two"]
11+
)
12+
13+
result = df.values
14+
expected = np.array([[1, 2, "a", "b"], [1, 2, "a", "b"]], dtype=object)
15+
16+
tm.assert_numpy_array_equal(result, expected)
17+
18+
def test_frame_values_with_tz(self):
19+
tz = "US/Central"
20+
df = DataFrame({"A": date_range("2000", periods=4, tz=tz)})
21+
result = df.values
22+
expected = np.array(
23+
[
24+
[Timestamp("2000-01-01", tz=tz)],
25+
[Timestamp("2000-01-02", tz=tz)],
26+
[Timestamp("2000-01-03", tz=tz)],
27+
[Timestamp("2000-01-04", tz=tz)],
28+
]
29+
)
30+
tm.assert_numpy_array_equal(result, expected)
31+
32+
# two columns, homogenous
33+
34+
df["B"] = df["A"]
35+
result = df.values
36+
expected = np.concatenate([expected, expected], axis=1)
37+
tm.assert_numpy_array_equal(result, expected)
38+
39+
# three columns, heterogeneous
40+
est = "US/Eastern"
41+
df["C"] = df["A"].dt.tz_convert(est)
42+
43+
new = np.array(
44+
[
45+
[Timestamp("2000-01-01T01:00:00", tz=est)],
46+
[Timestamp("2000-01-02T01:00:00", tz=est)],
47+
[Timestamp("2000-01-03T01:00:00", tz=est)],
48+
[Timestamp("2000-01-04T01:00:00", tz=est)],
49+
]
50+
)
51+
expected = np.concatenate([expected, new], axis=1)
52+
result = df.values
53+
tm.assert_numpy_array_equal(result, expected)

pandas/tests/frame/test_arithmetic.py

+14
Original file line numberDiff line numberDiff line change
@@ -1493,6 +1493,20 @@ def test_dunder_methods_binary(self, all_arithmetic_operators):
14931493
with pytest.raises(TypeError, match="takes 2 positional arguments"):
14941494
getattr(df, all_arithmetic_operators)(b, 0)
14951495

1496+
def test_align_int_fill_bug(self):
1497+
# GH#910
1498+
X = np.arange(10 * 10, dtype="float64").reshape(10, 10)
1499+
Y = np.ones((10, 1), dtype=int)
1500+
1501+
df1 = DataFrame(X)
1502+
df1["0.X"] = Y.squeeze()
1503+
1504+
df2 = df1.astype(float)
1505+
1506+
result = df1 - df1.mean()
1507+
expected = df2 - df2.mean()
1508+
tm.assert_frame_equal(result, expected)
1509+
14961510

14971511
def test_pow_with_realignment():
14981512
# GH#32685 pow has special semantics for operating with null values

pandas/tests/frame/test_join.py

+25-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55

66
import pandas as pd
7-
from pandas import DataFrame, Index, period_range
7+
from pandas import DataFrame, Index, MultiIndex, period_range
88
import pandas._testing as tm
99

1010

@@ -292,3 +292,27 @@ def test_join_multiindex_leftright(self):
292292

293293
tm.assert_frame_equal(df1.join(df2, how="right"), exp)
294294
tm.assert_frame_equal(df2.join(df1, how="left"), exp[["value2", "value1"]])
295+
296+
def test_merge_join_different_levels(self):
297+
# GH#9455
298+
299+
# first dataframe
300+
df1 = DataFrame(columns=["a", "b"], data=[[1, 11], [0, 22]])
301+
302+
# second dataframe
303+
columns = MultiIndex.from_tuples([("a", ""), ("c", "c1")])
304+
df2 = DataFrame(columns=columns, data=[[1, 33], [0, 44]])
305+
306+
# merge
307+
columns = ["a", "b", ("c", "c1")]
308+
expected = DataFrame(columns=columns, data=[[1, 11, 33], [0, 22, 44]])
309+
with tm.assert_produces_warning(UserWarning):
310+
result = pd.merge(df1, df2, on="a")
311+
tm.assert_frame_equal(result, expected)
312+
313+
# join, see discussion in GH#12219
314+
columns = ["a", "b", ("a", ""), ("c", "c1")]
315+
expected = DataFrame(columns=columns, data=[[1, 11, 0, 44], [0, 22, 1, 33]])
316+
with tm.assert_produces_warning(UserWarning):
317+
result = df1.join(df2, on="a")
318+
tm.assert_frame_equal(result, expected)

pandas/tests/frame/test_nonunique_indexes.py

-10
Original file line numberDiff line numberDiff line change
@@ -488,16 +488,6 @@ def test_columns_with_dups(self):
488488
xp.columns = ["A", "A", "B"]
489489
tm.assert_frame_equal(rs, xp)
490490

491-
def test_values_duplicates(self):
492-
df = DataFrame(
493-
[[1, 2, "a", "b"], [1, 2, "a", "b"]], columns=["one", "one", "two", "two"]
494-
)
495-
496-
result = df.values
497-
expected = np.array([[1, 2, "a", "b"], [1, 2, "a", "b"]], dtype=object)
498-
499-
tm.assert_numpy_array_equal(result, expected)
500-
501491
def test_set_value_by_index(self):
502492
# See gh-12344
503493
df = DataFrame(np.arange(9).reshape(3, 3).T)

pandas/tests/frame/test_timezones.py

-64
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""
44
import numpy as np
55
import pytest
6-
import pytz
76

87
from pandas.core.dtypes.dtypes import DatetimeTZDtype
98

@@ -14,43 +13,6 @@
1413

1514

1615
class TestDataFrameTimezones:
17-
def test_frame_values_with_tz(self):
18-
tz = "US/Central"
19-
df = DataFrame({"A": date_range("2000", periods=4, tz=tz)})
20-
result = df.values
21-
expected = np.array(
22-
[
23-
[pd.Timestamp("2000-01-01", tz=tz)],
24-
[pd.Timestamp("2000-01-02", tz=tz)],
25-
[pd.Timestamp("2000-01-03", tz=tz)],
26-
[pd.Timestamp("2000-01-04", tz=tz)],
27-
]
28-
)
29-
tm.assert_numpy_array_equal(result, expected)
30-
31-
# two columns, homogenous
32-
33-
df = df.assign(B=df.A)
34-
result = df.values
35-
expected = np.concatenate([expected, expected], axis=1)
36-
tm.assert_numpy_array_equal(result, expected)
37-
38-
# three columns, heterogeneous
39-
est = "US/Eastern"
40-
df = df.assign(C=df.A.dt.tz_convert(est))
41-
42-
new = np.array(
43-
[
44-
[pd.Timestamp("2000-01-01T01:00:00", tz=est)],
45-
[pd.Timestamp("2000-01-02T01:00:00", tz=est)],
46-
[pd.Timestamp("2000-01-03T01:00:00", tz=est)],
47-
[pd.Timestamp("2000-01-04T01:00:00", tz=est)],
48-
]
49-
)
50-
expected = np.concatenate([expected, new], axis=1)
51-
result = df.values
52-
tm.assert_numpy_array_equal(result, expected)
53-
5416
def test_frame_join_tzaware(self):
5517
test1 = DataFrame(
5618
np.zeros((6, 3)),
@@ -72,32 +34,6 @@ def test_frame_join_tzaware(self):
7234
tm.assert_index_equal(result.index, ex_index)
7335
assert result.index.tz.zone == "US/Central"
7436

75-
def test_frame_align_aware(self):
76-
idx1 = date_range("2001", periods=5, freq="H", tz="US/Eastern")
77-
idx2 = date_range("2001", periods=5, freq="2H", tz="US/Eastern")
78-
df1 = DataFrame(np.random.randn(len(idx1), 3), idx1)
79-
df2 = DataFrame(np.random.randn(len(idx2), 3), idx2)
80-
new1, new2 = df1.align(df2)
81-
assert df1.index.tz == new1.index.tz
82-
assert df2.index.tz == new2.index.tz
83-
84-
# different timezones convert to UTC
85-
86-
# frame with frame
87-
df1_central = df1.tz_convert("US/Central")
88-
new1, new2 = df1.align(df1_central)
89-
assert new1.index.tz == pytz.UTC
90-
assert new2.index.tz == pytz.UTC
91-
92-
# frame with Series
93-
new1, new2 = df1.align(df1_central[0], axis=0)
94-
assert new1.index.tz == pytz.UTC
95-
assert new2.index.tz == pytz.UTC
96-
97-
df1[0].align(df1_central, axis=0)
98-
assert new1.index.tz == pytz.UTC
99-
assert new2.index.tz == pytz.UTC
100-
10137
@pytest.mark.parametrize("tz", ["US/Eastern", "dateutil/US/Eastern"])
10238
def test_frame_no_datetime64_dtype(self, tz):
10339
# after GH#7822

0 commit comments

Comments
 (0)