python - Pandas:转换为数字,必要时创建 NaN

标签 python pandas

假设我在数据框中有一列包含一些数字和一些非数字

>> 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,并让其他所有非 float 转换为 NaN

当我尝试时:

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

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

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

最佳答案

在 Pandas 中 0.17.0 convert_objects引发警告:

FutureWarning: convert_objects is deprecated. Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.

您可以使用 pd.to_numeric方法并将其应用于带有 arg coerce.

的数据帧
df1 = df.apply(pd.to_numeric, args=('coerce',))

或许更恰当:

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

编辑

上述方法只对pandas版本>= 0.17.0有效,来自docs what's new in pandas 0.17.0 :

pd.to_numeric is a new function to coerce strings to numbers (possibly with coercion) (GH11133)

关于python - Pandas:转换为数字,必要时创建 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434208/

相关文章:

python - 在 python 中读取一个文件,该文件具有导致 utf-8 和 ascii 出错的流氓字节 0xc0

python - 如何构建包含依赖项的 Python 项目?

python - 在 pandas 中通过标签选择多列,并非全部按顺序

python - 如何使用列表理解格式化列表列表?

python - 我可以将表从 SQL Server (=MS SQL) 导入到 Python/Pandas 数据框中吗?

python - 使用自定义开始日在 Pandas 中创建周变量

python - 根据Python中groupby的第一个和最后一个值的条件创建一个新列

python - Django 我们如何使用应用程序名称目录和todaydate.log 文件生成应用程序明智日志

python - 大型 3D 阵列上的快速一维线性 np.NaN 插值

python - 将字典转换为数据框