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

我有一个熊猫数据框,其中包含一些非常过滤的数据


df['Q53']

OUTPUT:

0      Hvor mange timer træner din virksomhed medarbe...

3                                                    NaN

4                                                    NaN

5                                                    NaN

6                                                      2

7                                                    NaN

8                                                     10

9                                                    NaN

10                                                    50

11                                                   NaN

12                                                     ?

13                                                     ?

14                                                     8

15                                                   NaN

16                                                     2

17                                                     0

18                                                     1

19                                                     1

20                                                     5

21                                             7x3 timer

22                                                   NaN

23                                               8 timer

24                                                   NaN

25                                                     0

26                                                     8

27                                                   NaN


现在的问题是,我只想将整数留在列中,然后将它们转换为浮点数,这样我就可以对列进行一些数据可视化。


我想知道我是否可以做一些标准化的过滤,但我无法让它工作。


是否有一个操作,我可以过滤掉所有NaN和String值,只留下一个值,可以转换成一个float或int


当年话下
浏览 89回答 2
2回答

白衣非少年

将值转换为数值,然后删除错误值:df['Q53'] = pd.to_numeric(df['Q53'], errors='coerce')df = df.dropna(subset=['Q53'])print (df)     Q536    2.08   10.010  50.014   8.016   2.017   0.018   1.019   1.020   5.025   0.026   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)     Q536    2.08   10.010  50.014   8.016   2.017   0.018   1.019   1.020   5.021  21.023   8.025   0.026   8.0

慕少森

您可以检查是否isdigit仅选择True列。df[df['Q53'].apply(lambda x: str(x).isdigit())]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python