【问题标题】:Replacing "*" in a pandas dataframe [duplicate]替换熊猫数据框中的“*”[重复]
【发布时间】:2018-06-19 21:58:15
【问题描述】:

我有一个值数据框。

mydf.head():

    Amount Date        Description

0   39.95  2017-03-30  Paypal *A2zkidsltd     
1    2.39  2017-04-01  Mcdonalds              
2    8.03  2017-04-01  Wm Morrison
3   34.31  2017-04-01  Wm Morrison
4   10.56  2017-04-03  Asda Superstore

我希望将所有“*”替换为空。我在 Description 列上使用 pandas 替换功能。

mydf['Description'].replace('*','', inplace=True)

再看看结果:

mydf.head()

0   39.95 2017-03-30  Paypal *A2zkidsltd     
1    2.39 2017-04-01  Mcdonalds              
2    8.03 2017-04-01  Wm Morrison
3   34.31 2017-04-01  Wm Morrison
4   10.56 2017-04-03  Asda Superstore

第一个事务仍然包含一个“*”。

所有包含“*”的交易都会出现这种情况。

我看过文档;

https://pandas.pydata.org/pandas-docs/version/0.22.0/generated/pandas.DataFrame.replace.html

但是我看不出哪里出错了。我的代码或方法有什么错误?

【问题讨论】:

  • 我觉得你需要str你可以试试:df['Description'] = df['Description'].str.replace('*','')
  • 之所以不能按预期工作是因为pandas.DataFrame.replace匹配整个字符串值来替换它。

标签: python pandas


【解决方案1】:

你可以试试:

df['Description'] = df['Description'].str.replace('*','')

inplace 似乎没有选项,所以需要重新分配给column

【讨论】:

    【解决方案2】:

    尝试转义它 - * 是一个特殊字符 :)

    mydf['Description'].replace('\*','', inplace=True)
    

    或者正如 Sacul 建议的那样:

    mydf['Description'].replace('*','', regex=False, inplace=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      相关资源
      最近更新 更多