Skip to content

Commit 660d3de

Browse files
committed
fix: dataframe conditional where axis=1 failing on _NoDefault object is not suscriptable
1 parent 1863adb commit 660d3de

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

pandas/core/internals/managers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,8 @@ def apply(
431431
kwargs[k] = obj.iloc[b.mgr_locs.indexer]._values
432432
else:
433433
kwargs[k] = obj.iloc[:, b.mgr_locs.indexer]._values
434+
elif isinstance(obj, lib._NoDefault):
435+
pass
434436
else:
435437
# otherwise we have an ndarray
436438
kwargs[k] = obj[b.mgr_locs.indexer]

pandas/tests/series/indexing/test_where.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,3 +443,16 @@ def test_where_datetimelike_categorical(tz_naive_fixture):
443443
res = pd.DataFrame(lvals).where(mask[:, None], pd.DataFrame(rvals))
444444

445445
tm.assert_frame_equal(res, pd.DataFrame(dr))
446+
447+
@pytest.mark.parametrize(
448+
"original,conditional,expected",
449+
[([[0.0, 0.5, 0.0], [0.1, 0.0, 0.2], [0.2, 0.0, 0.0]], [True, True, False], [[0.0, 0.5, 0.0], [0.1, 0.0, 0.2], [np.nan, np.nan, np.nan]]),
450+
([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], [True, False, True], [[1.0, 2.0, 3.0], [np.nan, np.nan, np.nan], [7.0, 8.0, 9.0]])
451+
],
452+
)
453+
def test_where_axis1(original, conditional, expected):
454+
# GH 58190, 58144
455+
A = pd.DataFrame(original)
456+
res = A.where(Series(conditional), axis=1)
457+
expected = pd.DataFrame(expected)
458+
tm.assert_frame_equal(res, expected)

0 commit comments

Comments
 (0)