我想控制我的熊猫数据框中的非数字条目。说我有以下内容:
>>> df
col_1 col_2 col_3
0 0.01 NaN 0.1
1 NaN 0.9 0.2
2 0.01 NaN 0.3
3 0.01 0.9 0.4
我可以按如下方式采用行均值,而 python 会正确跳过 NaN 值:
>>> df.mean(axis=1)
0 0.055000
1 0.550000
2 0.155000
3 0.436667
dtype: float64
伟大的!。但现在假设我导入的表中的一个值是一个字符串
>>> df.iloc[0,1]="str1"
>>> df
col_1 col_2 col_3
0 0.01 str1 0.1
1 NaN 0.9 0.2
2 0.01 NaN 0.3
3 0.01 0.9 0.4
>>> df.mean(axis=1)
0 0.055
1 0.200
2 0.155
3 0.205
dtype: float64
危险:输出看起来合理,但错误,因为一旦我将位置值更改[0,1]
为字符串,位置值[1,1]
并[3,1]
从数字0.9
变为字符串"0.9"
,并且所有字符串都从平均中省略(我猜每个列必须是同一类型?这可能是有原因的,但男孩这很危险。)
我现在要做的是将数据框的所有条目强制恢复为数字类型。任何可以被合理地强制转换为数字的东西都应该成为那个数字,而任何不能被强制转换为数字的东西都应该成为nan
(不管它可能是什么字符串或类型)。
Pandas系列有一个pandas.to_numeric
可以设置的功能errors='coerce'
,但不幸的是 df's ( DataFrame.astype()
) 的类似功能不允许此选项。
是否有“使 dataFrame 的每个元素看起来像数字,并制作其他所有元素”的功能nan
?