本文介绍了 pandas :转换为数字,必要时创建NaN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说我在数据框中有一列,其中包含一些数字和一些非数字

Say I have a column in a dataframe that has some numbers and some non-numbers

>> df['foo']
0       0.0
1     103.8
2     751.1
3       0.0
4       0.0
5         -
6         -
7       0.0
8         -
9       0.0
Name: foo, Length: 9, dtype: object

如何将此列转换为np.float,并让所有不是浮点的内容都转换为NaN?

How can I convert this column to np.float, and have everything else that is not float convert it to NaN?

当我尝试时:

>> df['foo'].astype(np.float)

>> df['foo'].apply(np.float)

我得到ValueError: could not convert string to float: -

推荐答案

在熊猫中0.17.0 convert_objects 发出警告:

In pandas 0.17.0 convert_objects raises a warning:

您可以使用 pd.to_numeric 方法,并将其应用于带有arg coerce的数据框.

You could use pd.to_numeric method and apply it for the dataframe with arg coerce.

df1 = df.apply(pd.to_numeric, args=('coerce',))

或更合适:

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

编辑

以上方法仅对说明pandas 0.17.0的新功能:

这篇关于 pandas :转换为数字,必要时创建NaN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 00:32