【问题标题】:Data cleaning with pandas using regular expressions使用正则表达式使用 pandas 进行数据清理
【发布时间】:2018-06-04 22:06:07
【问题描述】:

我有几个这样的正则表达式,

Data['SUMMARY']=Data['SUMMARY'].str.replace(r'([^\w])',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'x{2,}',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'_+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\d+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\s{2,}',' ')

我想将所有标点符号、XXXXXXXX、所有数字、所有非字母数字替换为空字符串''。如何将它们组合成一个替换正则表达式?

【问题讨论】:

  • Data['SUMMARY'].str.replace('[^a-zA-Z\s]+|X{2,}', '')?
  • 你还需要删除空格吗?

标签: python regex pandas data-cleaning


【解决方案1】:

所以你想删除(根据你的问题)

  1. 标点符号
  2. X{2,}
  3. 数字
  4. 任何不是字母或数字的东西

这里有重叠的主题。您希望只保留字母和单个空格。您可以将单独的模式压缩为一个 -

df = pd.DataFrame({'SUMMARY' : ['hello, world!', 'XXXXX test', '123four, five:; six...']})

df

                  SUMMARY
0           hello, world!
1              XXXXX test
2  123four, five:; six...

df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')

0      hello world
1             test
2    four five six
Name: SUMMARY, dtype: object

如果您的列有两个或更多空格,您必须单独调用并替换它们。

df.SUMMARY = df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')\
                       .str.replace(r'\s{2,}', ' ')

【讨论】:

    【解决方案2】:

    如果您想替换 x 的小写和大写 2 or more occurrences,并且如果您还想用空字符串替换空格(其他空白字符):

    (?i)([^a-z]+|X{2,})
    

    如果你想保留空白字符,如果你想替换 2 x 或更多的大小写链,请使用:

    (?i)([^a-z\s]+|X{2,})
    

    如果您只想删除 2 个或更多 X 的大写链并保留 x 的小写链:

    ([^a-zA-Z\s]+|X{2,})
    

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 2021-02-04
      • 2020-09-10
      • 2020-07-03
      • 1970-01-01
      • 2017-03-11
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多