-
-
Notifications
You must be signed in to change notification settings - Fork 18k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug Fix: pd.DataFrame.sum with min_count changes dtype if result contains NaNs #47091
Bug Fix: pd.DataFrame.sum with min_count changes dtype if result contains NaNs #47091
Conversation
…weikhor/pandas into bug_fix_min_count_changes_dtype
pandas/core/nanops.py
Outdated
@@ -1472,7 +1472,8 @@ def _maybe_null_out( | |||
if np.iscomplexobj(result): | |||
result = result.astype("c16") | |||
else: | |||
result = result.astype("f8") | |||
if not is_float_dtype(result): | |||
result = result.astype("f8") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please make this an elif
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
add copy=False
doc/source/whatsnew/v1.5.0.rst
Outdated
@@ -780,7 +780,7 @@ Indexing | |||
- Bug in setting large integer values into :class:`Series` with ``float32`` or ``float16`` dtype incorrectly altering these values instead of coercing to ``float64`` dtype (:issue:`45844`) | |||
- Bug in :meth:`Series.asof` and :meth:`DataFrame.asof` incorrectly casting bool-dtype results to ``float64`` dtype (:issue:`16063`) | |||
- Bug in :meth:`NDFrame.xs`, :meth:`DataFrame.iterrows`, :meth:`DataFrame.loc` and :meth:`DataFrame.iloc` not always propagating metadata (:issue:`28283`) | |||
- | |||
- Bug in :meth:`_maybe_null_out` pd.DataFrame.sum with min_count changes dtype if result contains NaNs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_maybe_null_out
is private. Please reference the public functions, e.g. sum
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok Have updated
# GH#46947 | ||
df = DataFrame({"a": [1.0, 2.3, 4.4], "b": [2.2, 3, np.nan]}, dtype="float32") | ||
result = df.sum(**kwargs).dtype | ||
assert result == "float32" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please test the whole DataFrame and parametrize over all possible float dtypes.
thanks @weikhor very nice. can you add similar tests for |
doc/source/whatsnew/vX.X.X.rst
file if fixing a bug or adding a new feature.