【问题标题】:Remove non-numeric values in column using Python使用 Python 删除列中的非数字值
【发布时间】:2020-09-10 15:16:43
【问题描述】:

我已阅读有关类似示例的各种其他问题;但是,我认为我的示例与此不同,足以提出一个新问题。

我有以下格式的数据框:

'Bob, Dole, 00001' '0.4'
'John, Smith, 00002' '0.2'

我想删除名称,只保留第一列中的 ID:

'00001' '0.4'
'00002' '0.2'

我是 Python 新手,我偶然发现了这段代码 sn-p 有效。首先,我将 Data Frame Dat 转换为 numpy A = Dat.to_numpy()。然后我可以使用以下方法删除名称部分:

import re
print(re.sub("[^0-9]", "", A[1,0]))

我只是不知道如何将它应用到整个数据框(不使用循环)。有没有更简单的方法来做到这一点?还是应该只使用 for 循环?

【问题讨论】:

  • 您的示例 DataFrame 是 1 列还是 2 个单独的列?什么是列标题?一般你可以试试df['col'] = df['col'].str.replace('\D', '')
  • 两个单独的列,带有一个行标题(因此每列都有一个标题)。这确实有效!谢谢!

标签: python pandas


【解决方案1】:

听起来你可以使用 apply - 创建一个函数来执行您希望它在一行上执行的操作,例如, 然后使用这个语法:

df.apply(func)

希望这会有所帮助,如果不告诉我。

【讨论】:

    【解决方案2】:

    您可以使用.extract() 将 ID 从列中拉出:

    import pandas as pd
    
    df = pd.DataFrame({
        'x': ['Bob, Dole, 00001', 'John, Smith, 00002'], 
        'y': ['0.4', '0.2']})
    
    df['x'] = df['x'].str.extract(r'\w+, (\d+)')
    print(df)
    
           x    y
    0  00001  0.4
    1  00002  0.2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多