如何检查列是否有数字(包括科学数字),如果是,请保留它,否则将其留空 - Python Pandas

我目前正在尝试清理此数据集,但没有运气。这是我使用的初始代码:


import pandas as pd

Location =r'file.rpt'

df = pd.read_fwf(Location, delim_whitespace=True)

df=df.iloc[12:] #need to optimise this

df2 = df.rename({'********************************************************************************': 'Nodes'}, axis=1) 

df2[['Nodes', 'disp1','disp2','disp3']] = df2['Nodes'].str.split(n=3, expand=True)

输出:


    Node disp1 disp2 disp3

12  1001    0.  0.  0.

13  1002    0.  0.  0.

14  1003    0.  0.  0.

15  1004    0.  0.  -10.0E-3

16  1005    0.  --  -9.0E-3

17  1006    0.  te  0.

我的主要问题 - 我试图找到一种方法使每列只包含数字。我尝试了这个解决方案来删除非数字字符:


df2=df2[pd.to_numeric(df2['Nodes'], errors='coerce').notnull()]

df2=df2[pd.to_numeric(df2['IP'], errors='coerce').notnull()]

df2=df2[pd.to_numeric(df2['ESF'], errors='coerce').notnull()]

然而,它所做的是从单元格中删除“E”(科学记数法),并保留一堆其他东西,如“--”和非数字。是否有任何解决方案:


检查列是否为数字(允许科学数字) - 如果不是,请将其留空。


我开始认为这与我拆分数据时使用“str.split”的事实有关,这使它成为字符串而不是浮点数/整数...我不知道。任何帮助赞赏。


呼如林
浏览 136回答 1
1回答

萧十郎

如此处所述,解决方案为:df2 = df2.apply(pd.to_numeric, errors='coerce')之后,您的数据帧中包含 NaN 值。这就是熊猫的空白。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python