python– 将包含NaN值的整个Pandas数据帧从string转换为float

python– 将包含NaN值的整个Pandas数据帧从string转换为float,第1张

概述我想将pandas数据帧中的所有值从字符串转换为浮点数.我的数据帧包含各种NaN值(例如NaN,NA,None).例如,import pandas as pd import numpy as np my_data = np.array([[0.5, 0.2, 0.1], ['NA', 0.45, 0.2], [0.9, 0.02, 'N/A']]) df

我想将pandas数据帧中的所有值从字符串转换为浮点数.我的数据帧包含各种NaN值(例如NaN,NA,None).例如,

import pandas as pdimport numpy as npmy_data = np.array([[0.5,0.2,0.1],["NA",0.45,0.2],[0.9,0.02,"N/A"]])df = pd.DataFrame(my_data,dtype=str)

我找到了here和here(以及其他地方)convert_objects可能是要走的路.但是,我收到一条消息,它已被弃用(我使用的是Pandas 0.17.1),而应使用to_numeric.

df2 = df.convert_objects(convert_numeric=True)

输出:

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

但to_numeric似乎并没有实际转换字符串.

df3 = pd.to_numeric(df,errors='force')

输出:

df2:     0     1    20  0.5  0.20  0.11  NaN  0.45  0.22  0.9  0.02  NaNdf2 dtypes:0    float641    float642    float64dtype: objectdf3:     0     1    20  0.5   0.2  0.11   NA  0.45  0.22  0.9  0.02  N/Adf3 dtypes:0    object1    object2    objectdtype: object

我应该使用convert_objects并处理警告消息,还是有正确的方法来执行我想要的to_numeric?最佳答案奇怪的是这有效:

In [11]:df.apply(lambda x: pd.to_numeric(x,errors='force'))Out[11]:     0     1    20  0.5  0.20  0.11  NaN  0.45  0.22  0.9  0.02  NaN

看起来由于某种原因,它无法强制整个df,这有点令人惊讶

如果你讨厌打字(感谢@Zero)那么你可以使用:

df.apply(pd.to_numeric,errors='force')
总结

以上是内存溢出为你收集整理的python – 将包含NaN值的整个Pandas数据帧从string转换为float全部内容,希望文章能够帮你解决python – 将包含NaN值的整个Pandas数据帧从string转换为float所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1206437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存