【问题标题】:AttributeError: 'str' object has no attribute 'str'AttributeError:“str”对象没有属性“str”
【发布时间】:2019-01-15 02:09:51
【问题描述】:

我的pandas DataFrame 如下所示。我正在尝试从我的income 列中删除'$'',',然后应用到我原来的dataframe。所以我创建了下面的函数。但是,它给了我错误说 "str" object has no attribute "str".

非常感谢任何有关如何解决此问题的建议。

注意:我是 python 新手,所以请提供解释。

我的数据框:

df1=pd.DataFrame(
     {'Name': ['a', 'b','c','d'],
     'income': ['$1', '$2,000','$10,000','$140,000']})

我的职能:

def column_replace(x):
    return x.str.replace('$', '').str.replace(',','').apply(lambda x: column_replace(x))

【问题讨论】:

  • 只是x.replace 而不是x.str.replace
  • 可以添加调用column_replace的代码吗?看起来这是您以 df1 列作为参数调用的函数,这将建议一种解决方案。但是,如果您打算使用 df1 本身作为参数来调用它,那将提出不同的解决方案,因此在您的帖子中进行区分很重要。
  • 刚刚意识到..进行了更正。谢谢!
  • 加上PaSTE所说的,为什么需要递归调用column_replace()
  • 我正在尝试用 No '$ 'and ',' 替换我的原始数据框列

标签: python string pandas


【解决方案1】:
In [23]: df1
Out[23]: 
  Name    income
0    a        $1
1    b    $2,000
2    c   $10,000
3    d  $140,000

In [24]: cols_to_change = ['income']

In [25]: for col in cols_to_change:
    ...:     df1[col] = df1[col].str.replace('[$,]', '')
    ...: 

In [26]: df1
Out[26]: 
  Name  income
0    a       1
1    b    2000
2    c   10000
3    d  140000

【讨论】:

  • 如果我的数据框中有多个包含 $ 和 , 的列怎么办。我应该如何去除它们?
  • 查看我更新的示例。即,您可以列出要更改的列,并像我的示例一样遍历它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
  • 2021-10-04
  • 2019-12-02
  • 2021-09-25
  • 2014-03-04
  • 2013-09-22
  • 2018-09-19
相关资源
最近更新 更多