【问题标题】:How to extract specific content in a pandas dataframe如何在熊猫数据框中提取特定内容
【发布时间】:2022-01-17 14:40:10
【问题描述】:

我想从字符串中提取特定内容。 考虑以下数据框:

data = {'time': [0, 1, 2, 3, 4], 'id': ["bike0", "bike10", "veh0", "veh10", "moto100"]}  
df = pd.DataFrame(data)

我想用正则表达式提取字符串中的数字值。 最终结果应该是:

data = {'time': [0, 1, 2, 3, 4], 'id': [0, 10, 0, 10, 100]}  
df = pd.DataFrame(data)

这里的难点在于字符串的长度和要提取的位数是可变的。

感谢您的帮助。

【问题讨论】:

标签: python pandas string extract python-re


【解决方案1】:

您可以在id 列中每个字符串的末尾获取一系列数字,然后将它们转换为整数并重新分配给id 列。

df['id'] = df.id.str.extract(r'(\d+)$').astype(int)

【讨论】:

  • 你确定吗?它引发了AttributeError: 'dict' object has no attribute 'id'
  • 是的,我确定。该错误表明您正在尝试访问字典的 id 属性,而不是数据框。你是不是误在data上运行了?
  • @XxJames07-,@James 的答案也有效(python3.6)所以我赞成它。当然,您使用的是data.id 而不是df.id。也许您也可以从堆栈跟踪中发布AttributeError: 'dict' object has no attribute 'id' 上方的行。
  • 是的,很抱歉我的错误,我忘了说我已经测试过了,它可以工作,谢谢你的时间。
【解决方案2】:

我希望下面的代码没问题。它会删除所有字母字符。您可以将其扩展到特殊字符。

import pandas as pd
data = {'time': [0, 1, 2, 3, 4], 'id': ["bike0", "biKe10", "veh0", "veh10", "moto100"]}  
df = pd.DataFrame(data)
df["id"] = df["id"].str.replace(r"[a-z]","", case=False)
print(df)

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2018-02-28
    • 2019-03-24
    • 1970-01-01
    相关资源
    最近更新 更多