Skip to content

Commit 8791f2b

Browse files
committed
BUG: Fix NaN vs NA in mixed reduction (GH#62024)
1 parent 9ff14a3 commit 8791f2b

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

pandas/core/frame.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11850,6 +11850,14 @@ def _reduce(
1185011850
if axis is not None:
1185111851
axis = self._get_axis_number(axis)
1185211852

11853+
if axis == 0:
11854+
data = self._get_numeric_data() if numeric_only else self
11855+
results = {}
11856+
for col in data.columns:
11857+
ser = data[col]
11858+
results[col] = getattr(ser, name)(skipna=skipna, **kwds)
11859+
return self._constructor_sliced(results)
11860+
1185311861
def func(values: np.ndarray):
1185411862
# We only use this in the case that operates on self.values
1185511863
return op(values, axis=axis, skipna=skipna, **kwds)

pandas/tests/frame/test_reductions.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,20 @@ def float_frame_with_na():
221221
return df
222222

223223

224+
def test_mixed_reduction_nan_vs_NA():
225+
df = DataFrame(
226+
{
227+
"B": [1, None, 3],
228+
"C": pd.array([1, None, 3], dtype="Int64"),
229+
}
230+
)
231+
result = df.skew()
232+
assert np.isnan(result["B"])
233+
assert isna(result["C"]) and type(result["C"]).__name__ == "NAType"
234+
result_B = df[["B"]].skew()
235+
assert np.isnan(result_B["B"])
236+
237+
224238
class TestDataFrameAnalytics:
225239
# ---------------------------------------------------------------------
226240
# Reductions

0 commit comments

Comments
 (0)