为了账号安全,请及时绑定邮箱和手机立即绑定

过滤熊猫中的列并转换为浮点数

过滤熊猫中的列并转换为浮点数

当年话下 2022-06-07 17:14:56
我有一个熊猫数据框,其中包含一些非常过滤的数据df['Q53']OUTPUT:0      Hvor mange timer træner din virksomhed medarbe...3                                                    NaN4                                                    NaN5                                                    NaN6                                                      27                                                    NaN8                                                     109                                                    NaN10                                                    5011                                                   NaN12                                                     ?13                                                     ?14                                                     815                                                   NaN16                                                     217                                                     018                                                     119                                                     120                                                     521                                             7x3 timer22                                                   NaN23                                               8 timer24                                                   NaN25                                                     026                                                     827                                                   NaN现在的问题是,我只想将整数留在列中,然后将它们转换为浮点数,这样我就可以对列进行一些数据可视化。我想知道我是否可以做一些标准化的过滤,但我无法让它工作。是否有一个操作,我可以过滤掉所有NaN和String值,只留下一个值,可以转换成一个float或int
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

将值转换为数值,然后删除错误值:


df['Q53'] = pd.to_numeric(df['Q53'], errors='coerce')

df = df.dropna(subset=['Q53'])

print (df)

     Q53

6    2.0

8   10.0

10  50.0

14   8.0

16   2.0

17   0.0

18   1.0

19   1.0

20   5.0

25   0.0

26   8.0

编辑:我建议不要使用eval,这里是提取数字x之间的解决方案,转换为浮点数和多个之间。


\d+然后用正则表达式中的模式提取并转换为数字的所有数字替换缺失值。


最后通过以下方式删除缺失值DataFrame.dropna:


dfx = df['Q53'].astype(str).str.extract('(\d+)x(\d+)').astype(float).prod(axis=1, min_count=1)


num = df['Q53'].astype(str).str.extract('(\d+)', expand=False)


df['Q53'] = dfx.fillna(pd.to_numeric(num, errors='coerce'))

df = df.dropna(subset=['Q53'])

print (df)

     Q53

6    2.0

8   10.0

10  50.0

14   8.0

16   2.0

17   0.0

18   1.0

19   1.0

20   5.0

21  21.0

23   8.0

25   0.0

26   8.0


查看完整回答
反对 回复 2022-06-07
?
慕少森

TA贡献2019条经验 获得超9个赞

您可以检查是否isdigit仅选择True列。

df[df['Q53'].apply(lambda x: str(x).isdigit())]


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信