Skip to content

Commit 0e42c55

Browse files
authored
TST: Add regression tests for old issues (#41389)
1 parent ec0e29a commit 0e42c55

File tree

8 files changed

+99
-0
lines changed

8 files changed

+99
-0
lines changed

pandas/tests/arithmetic/test_numeric.py

+15
Original file line numberDiff line numberDiff line change
@@ -1407,3 +1407,18 @@ def test_integer_array_add_list_like(
14071407

14081408
assert_function(left, expected)
14091409
assert_function(right, expected)
1410+
1411+
1412+
def test_sub_multiindex_swapped_levels():
1413+
# GH 9952
1414+
df = pd.DataFrame(
1415+
{"a": np.random.randn(6)},
1416+
index=pd.MultiIndex.from_product(
1417+
[["a", "b"], [0, 1, 2]], names=["levA", "levB"]
1418+
),
1419+
)
1420+
df2 = df.copy()
1421+
df2.index = df2.index.swaplevel(0, 1)
1422+
result = df - df2
1423+
expected = pd.DataFrame([0.0] * 6, columns=["a"], index=df.index)
1424+
tm.assert_frame_equal(result, expected)

pandas/tests/frame/indexing/test_where.py

+16
Original file line numberDiff line numberDiff line change
@@ -729,3 +729,19 @@ def test_where_string_dtype(frame_or_series):
729729
dtype=StringDtype(),
730730
)
731731
tm.assert_equal(result, expected)
732+
733+
734+
def test_where_bool_comparison():
735+
# GH 10336
736+
df_mask = DataFrame(
737+
{"AAA": [True] * 4, "BBB": [False] * 4, "CCC": [True, False, True, False]}
738+
)
739+
result = df_mask.where(df_mask == False) # noqa:E712
740+
expected = DataFrame(
741+
{
742+
"AAA": np.array([np.nan] * 4, dtype=object),
743+
"BBB": [False] * 4,
744+
"CCC": [np.nan, False, np.nan, False],
745+
}
746+
)
747+
tm.assert_frame_equal(result, expected)

pandas/tests/frame/methods/test_reset_index.py

+14
Original file line numberDiff line numberDiff line change
@@ -657,3 +657,17 @@ def test_reset_index_empty_frame_with_datetime64_multiindex_from_groupby():
657657
expected["c3"] = expected["c3"].astype("datetime64[ns]")
658658
expected["c1"] = expected["c1"].astype("float64")
659659
tm.assert_frame_equal(result, expected)
660+
661+
662+
def test_reset_index_multiindex_nat():
663+
# GH 11479
664+
idx = range(3)
665+
tstamp = date_range("2015-07-01", freq="D", periods=3)
666+
df = DataFrame({"id": idx, "tstamp": tstamp, "a": list("abc")})
667+
df.loc[2, "tstamp"] = pd.NaT
668+
result = df.set_index(["id", "tstamp"]).reset_index("id")
669+
expected = DataFrame(
670+
{"id": range(3), "a": list("abc")},
671+
index=pd.DatetimeIndex(["2015-07-01", "2015-07-02", "NaT"], name="tstamp"),
672+
)
673+
tm.assert_frame_equal(result, expected)

pandas/tests/frame/test_constructors.py

+6
Original file line numberDiff line numberDiff line change
@@ -2398,6 +2398,12 @@ def check_views():
23982398
# assert b[0] == 0
23992399
assert df.iloc[0, 2] == 0
24002400

2401+
def test_from_series_with_name_with_columns(self):
2402+
# GH 7893
2403+
result = DataFrame(Series(1, name="foo"), columns=["bar"])
2404+
expected = DataFrame(columns=["bar"])
2405+
tm.assert_frame_equal(result, expected)
2406+
24012407

24022408
class TestDataFrameConstructorWithDatetimeTZ:
24032409
@pytest.mark.parametrize("tz", ["US/Eastern", "dateutil/US/Eastern"])

pandas/tests/frame/test_stack_unstack.py

+20
Original file line numberDiff line numberDiff line change
@@ -1998,3 +1998,23 @@ def test_stack_nan_in_multiindex_columns(self):
19981998
columns=Index([(0, None), (0, 2), (0, 3)]),
19991999
)
20002000
tm.assert_frame_equal(result, expected)
2001+
2002+
def test_stack_nan_level(self):
2003+
# GH 9406
2004+
df_nan = DataFrame(
2005+
np.arange(4).reshape(2, 2),
2006+
columns=MultiIndex.from_tuples(
2007+
[("A", np.nan), ("B", "b")], names=["Upper", "Lower"]
2008+
),
2009+
index=Index([0, 1], name="Num"),
2010+
dtype=np.float64,
2011+
)
2012+
result = df_nan.stack()
2013+
expected = DataFrame(
2014+
[[0.0, np.nan], [np.nan, 1], [2.0, np.nan], [np.nan, 3.0]],
2015+
columns=Index(["A", "B"], name="Upper"),
2016+
index=MultiIndex.from_tuples(
2017+
[(0, np.nan), (0, "b"), (1, np.nan), (1, "b")], names=["Num", "Lower"]
2018+
),
2019+
)
2020+
tm.assert_frame_equal(result, expected)

pandas/tests/indexing/multiindex/test_loc.py

+12
Original file line numberDiff line numberDiff line change
@@ -776,3 +776,15 @@ def test_loc_getitem_drops_levels_for_one_row_dataframe():
776776
result = ser.loc["x", :, "z"]
777777
expected = Series([0], index=Index(["y"], name="b"))
778778
tm.assert_series_equal(result, expected)
779+
780+
781+
def test_mi_columns_loc_list_label_order():
782+
# GH 10710
783+
cols = MultiIndex.from_product([["A", "B", "C"], [1, 2]])
784+
df = DataFrame(np.zeros((5, 6)), columns=cols)
785+
result = df.loc[:, ["B", "A"]]
786+
expected = DataFrame(
787+
np.zeros((5, 4)),
788+
columns=MultiIndex.from_tuples([("B", 1), ("B", 2), ("A", 1), ("A", 2)]),
789+
)
790+
tm.assert_frame_equal(result, expected)

pandas/tests/reshape/concat/test_datetimes.py

+8
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,14 @@ def test_concat_tz_NaT(self, t1):
470470

471471
tm.assert_frame_equal(result, expected)
472472

473+
def test_concat_tz_with_empty(self):
474+
# GH 9188
475+
result = concat(
476+
[DataFrame(date_range("2000", periods=1, tz="UTC")), DataFrame()]
477+
)
478+
expected = DataFrame(date_range("2000", periods=1, tz="UTC"))
479+
tm.assert_frame_equal(result, expected)
480+
473481

474482
class TestPeriodConcat:
475483
def test_concat_period_series(self):

pandas/tests/series/indexing/test_setitem.py

+8
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,14 @@ def test_setitem_slicestep(self):
201201
series[::2] = 0
202202
assert (series[::2] == 0).all()
203203

204+
def test_setitem_multiindex_slice(self, indexer_sli):
205+
# GH 8856
206+
mi = MultiIndex.from_product(([0, 1], list("abcde")))
207+
result = Series(np.arange(10, dtype=np.int64), mi)
208+
indexer_sli(result)[::4] = 100
209+
expected = Series([100, 1, 2, 3, 100, 5, 6, 7, 100, 9], mi)
210+
tm.assert_series_equal(result, expected)
211+
204212

205213
class TestSetitemBooleanMask:
206214
def test_setitem_boolean(self, string_series):

0 commit comments

Comments
 (0)