python - 为什么 fillna 不适用于浮点值?
问题描述
我尝试在数据集的所有空单元格中替换该列的平均值。
我用modifiedData=data.fillna(data.mean())
但它仅适用于整数列类型。我还有一个带有浮点值的列,但它fillna
不起作用。
为什么?
解决方案
.fillna()
适用于nan
. nan
不能存在于int
列中的概念。Pandas dtypeint
不支持nan
. 如果您有一列似乎是整数,则它更有可能是一个对象列。也许甚至充满了字符串。在某些情况下为空的字符串。
空字符串不填充.fillna()
In [8]: pd.Series(["2", "1", ""]).fillna(0)
Out[8]:
0 2
1 1
2
dtype: object
弄清楚发生了什么的一个简单方法是使用该df.Column.isna()
方法。
如果那个方法给你所有False
。你知道没有nan
可填的。
将空字符串转换为nan
值
In [11]: s = pd.Series(["2", "1", ""])
In [12]: empty_string_mask = s.str.len() == 0
In [21]: s.loc[empty_string_mask] = float('nan')
In [22]: s
Out[22]:
0 2
1 1
2 NaN
dtype: object
之后你可以fillna
In [23]: s.fillna(0)
Out[23]:
0 2
1 1
2 0
dtype: object
解决此问题的另一种方法是检查 dtype
df.column.dtype
如果它说它'object'
确认了您的问题
您可以将该列转换为浮动列
df.column = df.column.dtype(float)
虽然在 pandas 中操作 dtypes 通常会导致痛苦,但这可能是解决这个特定问题的更简单的方法。
推荐阅读
- python - 即使打包已安装,Pyp3 也会给出 ModuleNotFoundError
- blockchain - indy-node 和 indy-sdk 有什么区别?
- html - 使用 {{currentDate | 获取接下来的两个月 日期:'MMM'}}
- google-analytics - 分析显示 fbclid 和 fblogin.htm 但我不应该拥有它们
- html - 从 URL 中填充模态文本(引导程序)
- oracle - 如何在 oracle 19c 的 MERGE 语句中使用提交?
- javascript - 构造 DTO 而不显式命名值
- image - pdf Flutter,如何将资产中的图像(JPG/PNG等)附加到pdf中
- python-3.x - 运行雅虎财务模块时出现错误
- ember.js - 如何在 Ember JS 的轮播中显示视频