如何将DataFrame
中的非数字转换为NaN (numpy)
?例如,这是一个DataFrame
:
a b
--------
10 ...
4 5
... 6
如何将其转换为:
a b
--------
10 NaN
4 5
NaN 6
如果我理解正确,你只需做
df = df.apply(lambda x: pd.to_numeric(x, errors='coerce') )
这将强制把错误的值转换为 NaN
,请注意,NaN
的存在会将数据类型更改为 float
,因为 int
无法表示 NaN
.
In [6]:
df = df.apply(pd.to_numeric, errors='coerce')
df
Out[6]:
a b
0 10.0 NaN
1 4.0 5.0
2 NaN 6.0
lambda
不是必需的,但在我看来更易读
df = df.apply(pd.to_numeric, errors='coerce')
。apply
将传递 errors
参数。 - piRSquaredlambda
只是语法。如果apply
没有将参数传递给被传递的函数,那么您将需要它。我同意EdChum的观点...使用lambda可以更明显地表达正在发生的事情。 - piRSquaredstack
操作,然后再进行 unstack
操作。pd.to_numeric(df.stack(), errors='coerce').unstack()
a b
0 10.0 NaN
1 4.0 5.0
2 NaN 6.0