【问题标题】:Stripping DataFrame column from text to make integer从文本中剥离 DataFrame 列以生成整数
【发布时间】:2021-03-18 19:16:30
【问题描述】:

我找不到一种简单的方法来做到这一点,而且没有一种复杂的方法奏效。你能帮忙吗?

我有一个来自网络抓取的数据框。在那里,我有一个 data['Milage'] 列,其结果如下:'80,000 英里'。显然这是一个字符串,所以我正在寻找一种方法来擦除所有非数字内容并将该字符串转换为直数 '80,000 英里' -> '80000'

我尝试了以下方法:

data['Milage'] = data['Milage'].str[1:].astype(int)

不知道上面的代码是做什么的,我是从这里的另一篇文章中获取的。但我收到以下错误消息:

  File "autotrader.py", line 73, in <module>
    data['Milage'] = data['Milage'].str[1:].astype(int)
AttributeError: 'str' object has no attribute 'str'

我尝试的另一个解决方案是:

data['Milage'] = str(data['Milage']).extract('(\d+)').astype(int)

而产生的错误如下:

  File "autotrader.py", line 73, in <module>
    data['Milage'] = str(data['Milage']).extract('(\d+)').astype(int)
AttributeError: 'str' object has no attribute 'extract'

如果有任何帮助,我将不胜感激!谢谢

【问题讨论】:

    标签: python pandas selenium


    【解决方案1】:

    在一些测试问题是data是字典之后,你需要处理dfDataFrame

    我认为您需要删除非数值并转换为整数:

    df['Milage'] = df['Milage'].str.replace('\D','').astype(int)
    print(df['Milage'])
    0      70000
    1      69186
    2      46820
    3      54000
    4      83600
    5     139000
    6      62000
    7      51910
    8      86000
    9      38000
    10     65000
    11    119000
    12     49500
    13     60000
    14     35000
    15     57187
    16     45050
    17     80000
    18     84330
    19     85853
    Name: Milage, dtype: int32
    

    【讨论】:

    • 感谢@jezrael 的回复,很遗憾我收到以下错误消息:> AttributeError: 'str' object has no attribute 'astype'
    • @Csongor - 这意味着str 在您的代码中用作变量,您可以检查一下吗?
    • 我可以给你发私信吗?我想分享完整的代码
    • @Csongor - 检查我的配置文件中的代码,为我的电子邮件运行它
    • @Csongor - 看起来不错,一个想法,可以重新启动你的 IDE 吗?
    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2018-04-03
    • 2011-06-04
    • 1970-01-01
    • 2022-12-27
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多