我目前正在尝试清理此数据集,但没有运气。这是我使用的初始代码:
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”的事实有关,这使它成为字符串而不是浮点数/整数...我不知道。任何帮助赞赏。
呼如林
萧十郎
随时随地看视频慕课网APP
相关分类