Skip to content

Commit f44afcf

Browse files
committed
Add skipna keyword into astype
1 parent 99dc246 commit f44afcf

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

pandas/core/generic.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -5776,7 +5776,7 @@ def _to_dict_of_blocks(self, copy=True):
57765776
for k, v, in self._data.to_dict(copy=copy).items()
57775777
}
57785778

5779-
def astype(self, dtype, copy=True, errors="raise"):
5779+
def astype(self, dtype, copy=True, errors="raise", skipna=True):
57805780
"""
57815781
Cast a pandas object to a specified dtype ``dtype``.
57825782
@@ -5798,6 +5798,9 @@ def astype(self, dtype, copy=True, errors="raise"):
57985798
- ``ignore`` : suppress exceptions. On error return original object.
57995799
58005800
.. versionadded:: 0.20.0
5801+
skipna : bool, default True
5802+
Exclude NA/null values in type conversion.
5803+
58015804
58025805
Returns
58035806
-------
@@ -5884,7 +5887,7 @@ def astype(self, dtype, copy=True, errors="raise"):
58845887
"the key in Series dtype mappings."
58855888
)
58865889
new_type = dtype[self.name]
5887-
return self.astype(new_type, copy, errors)
5890+
return self.astype(new_type, copy, errors, skipna)
58885891

58895892
for col_name in dtype.keys():
58905893
if col_name not in self:
@@ -5896,7 +5899,12 @@ def astype(self, dtype, copy=True, errors="raise"):
58965899
for col_name, col in self.items():
58975900
if col_name in dtype:
58985901
results.append(
5899-
col.astype(dtype=dtype[col_name], copy=copy, errors=errors)
5902+
col.astype(
5903+
dtype=dtype[col_name],
5904+
copy=copy,
5905+
errors=errors,
5906+
skipna=skipna
5907+
)
59005908
)
59015909
else:
59025910
results.append(results.append(col.copy() if copy else col))
@@ -5911,7 +5919,9 @@ def astype(self, dtype, copy=True, errors="raise"):
59115919

59125920
else:
59135921
# else, only a single dtype is given
5914-
new_data = self._data.astype(dtype=dtype, copy=copy, errors=errors)
5922+
new_data = self._data.astype(
5923+
dtype=dtype, copy=copy, errors=errors, skipna=skipna
5924+
)
59155925
return self._constructor(new_data).__finalize__(self)
59165926

59175927
# GH 19920: retain column metadata after concat

pandas/core/internals/blocks.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -536,10 +536,10 @@ def f(mask, val, idx):
536536

537537
return self.split_and_operate(None, f, False)
538538

539-
def astype(self, dtype, copy=False, errors="raise", **kwargs):
540-
return self._astype(dtype, copy=copy, errors=errors, **kwargs)
539+
def astype(self, dtype, copy=False, errors="raise", skipna=True, **kwargs):
540+
return self._astype(dtype, copy=copy, errors=errors, skipna=skipna, **kwargs)
541541

542-
def _astype(self, dtype, copy=False, errors="raise", **kwargs):
542+
def _astype(self, dtype, copy=False, errors="raise", skipna=True, **kwargs):
543543
"""Coerce to the new type
544544
545545
Parameters
@@ -606,7 +606,7 @@ def _astype(self, dtype, copy=False, errors="raise", **kwargs):
606606
else:
607607
values = self.get_values(dtype=dtype)
608608

609-
skipna = kwargs.pop("skipna", True)
609+
#skipna = kwargs.pop("skipna", True)
610610
# _astype_nansafe works fine with 1-d only
611611
vals1d = values.ravel()
612612
try:

0 commit comments

Comments
 (0)