【问题标题】:Cannot replace special characters in a Python pandas dataframe无法替换 Python pandas 数据框中的特殊字符
【发布时间】:2018-11-23 14:17:55
【问题描述】:

我在 Windows 中使用 Python 3.5。我有一个数据框,其中'titles' str 类型列包含标题标题,其中一些具有特殊字符,例如â˜

我正在尝试使用pandas.replace 将这些替换为空格''。我尝试了各种迭代,但没有任何效果。我可以替换常规字符,但这些特殊字符似乎不起作用。

代码运行没有错误,但根本不会发生替换,而是返回原始标题。以下是我已经尝试过的。任何建议将不胜感激。

df['clean_title'] = df['titles'].replace('€','',regex=True)
df['clean_titles'] = df['titles'].replace('€','')
df['clean_titles'] = df['titles'].str.replace('€','')

def clean_text(row):
   return re.sub('€','',str(row))
   return str(row).replace('€','')
df['clean_title'] = df['titles'].apply(clean_text)

【问题讨论】:

  • 我无法重现,您的第三个示例对我有用。您可以发布您的数据框示例吗?
  • 假设标题是“‘BetterHash’:比特币核心开发。提出分散比特币挖矿的新协议'
  • 这看起来更像是一个编码错误。因此,您最好在编码级别解决这个问题。
  • 我在使用 read_csv 导入 csv 文件时尝试了各种编码,例如 utf-8。没有任何效果:(
  • 试试.replace('\xE2\x82\xAC', '')

标签: python regex string pandas dataframe


【解决方案1】:

我们只能假设您将非 ASCI 称为“特殊”字符。

要删除 pandas 数据框列中的所有个非 ASCI 字符,请执行以下操作:

df['clean_titles'] = df['titles'].str.replace(r'[^\x00-\x7f]', '')

请注意,这是一个可扩展的解决方案,因为它适用于任何非 ASCI 字符。

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 2022-09-23
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 2018-02-10
    • 2014-05-04
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多