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

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

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

呼如林 2022-09-06 15:38:50
我目前正在尝试清理此数据集,但没有运气。这是我使用的初始代码:import pandas as pdLocation =r'file.rpt'df = pd.read_fwf(Location, delim_whitespace=True)df=df.iloc[12:] #need to optimise thisdf2 = df.rename({'********************************************************************************': 'Nodes'}, axis=1) df2[['Nodes', 'disp1','disp2','disp3']] = df2['Nodes'].str.split(n=3, expand=True)输出:    Node disp1 disp2 disp312  1001    0.  0.  0.13  1002    0.  0.  0.14  1003    0.  0.  0.15  1004    0.  0.  -10.0E-316  1005    0.  --  -9.0E-317  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”的事实有关,这使它成为字符串而不是浮点数/整数...我不知道。任何帮助赞赏。
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

如此处所述,解决方案为:

df2 = df2.apply(pd.to_numeric, errors='coerce')

之后,您的数据帧中包含 NaN 值。这就是熊猫的空白。


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

添加回答

举报

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