[英]Replace numbers by `nan` in pandas data frame
我在熊猫数据框上的一栏有问题。 由于数据输入错误,我有一列包含true
和false
,但它也包含约71个小数。
我试图摆脱小数点并将其变成nan
以便我可以忽略那些行以进行进一步分析。
当我尝试:
datafinal['any_misread'] = datafinal['any_misread'].where(datafinal['any_misread'] < 1, np.nan)
我得到错误:
TypeError: unorderable types: str() < int()
我也尝试使用.replace
逻辑处理,但没有成功。
我在这里想念什么?
让我们尝试使用where
和astype
:
df = pd.DataFrame({'col1':[True, False, 0.12, True, False, .3]})
df.where((df.col1.astype(str) == 'True') | (df.col1.astype(str) == 'False'))
输出:
col1
0 True
1 False
2 NaN
3 True
4 False
5 NaN
您可以检查列中每个项目的类型是否不是布尔值,然后更改值。
df = pd.DataFrame([[True],[True],[False],[10.2],[1.0],[False],[0]], columns=['misread'])
df.misread[df.misread.apply(lambda x: not isinstance(x, bool))] = pd.np.nan
df
# returns
misread
0 True
1 True
2 False
3 NaN
4 NaN
5 False
6 NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.