首页 > 解决方案 > Pandas 检测非数字数据类型

问题描述

我需要检测并防止任何非数字数据进入我的数据框。

例子:

     value       in       out     transf      inc        buy
0   208372  4206.84   4692.22     215976   725.41  105339.92
1      abs     0.00   1270.28      13602  1151.29       0.00
2   230172     0.00   1930.40      21539  1938.59       0.00
3   394391     0.00  11517.96     174320  1517.06  170032.09
4   382101     0.00   2962.82          0  3001.14   10000.00

print(df.dtypes) 给了我这个:

value         object
in           float64
out          float64
transf         int64
inc          float64
buy          float64
dtype: object

那么如何检测是否有任何非数字(float64,int64)数据类型?

谢谢你。

标签: pandas

解决方案


尝试使用pd.to_numeric,它会将非数字更改为 NaN。然后我们只需要用isnaor检测 NaNisnull

df.apply(pd.to_numeric,errors='coerce')
      value       in       out  transf      inc        buy
0  208372.0  4206.84   4692.22  215976   725.41  105339.92
1       NaN     0.00   1270.28   13602  1151.29       0.00
2  230172.0     0.00   1930.40   21539  1938.59       0.00
3  394391.0     0.00  11517.96  174320  1517.06  170032.09
4  382101.0     0.00   2962.82       0  3001.14   10000.00

让我们添加

df.apply(pd.to_numeric,errors='coerce').isnull().any().any()

如果True应该有问题,如果False应该没问题


推荐阅读