【问题标题】:Pandas.str.replace Regex ApplicationPandas.str.replace 正则表达式应用程序
【发布时间】:2017-11-19 13:37:07
【问题描述】:

我正在尝试进行一些数据质量控制,并希望使用 Pandas.str.replace 方法使用正则表达式将一个字符串替换为另一个字符串。我正在考虑重新格式化一个看起来像

的字符串
#'250 ED ENGLISH DR, BLDG #3 UNIT C,'

这样的:

#'250 ED ENGLISH DR, #3C  

我使用了以下内容,但 pandas 没有识别出我正在尝试用正则表达式替换:

df.Address=df.Address.str.replace(r'250 ENGLISH DR, BLDG #\d* UNIT \S[a-z]*', r'250 ENGLISH DR,' + r'(?<=250 ENGLISH DR, BLDG #)\d*' + r'\S{1,2}$', regex=True)

有没有人知道如何调整此代码以使其正常工作?搜索字符串效果很好。

【问题讨论】:

标签: python regex python-3.x pandas replace


【解决方案1】:

如果您严格尝试替换单词“BLDG”和“UNIT”,这将起作用。

df

    Address
0   250 ED ENGLISH DR, BLDG #3 UNIT C

试试

df.Address.str.replace('BLDG | UNIT ', '')

返回

0    250 ED ENGLISH DR, #3C

【讨论】:

  • 突然我发现这对于这个特定的字符串要简单得多。令人惊讶的是,您的大脑能够以多快的速度过度处理问题。出于好奇,如果我需要使用正则表达式来解决问题,你知道正确的格式吗?谢谢。
【解决方案2】:

你应该试试这个。

df.Address=df.Address.str.replace(r'250 ENGLISH DR, BLDG #(\d*) UNIT (\S[a-zA-Z]*)', r'250 ENGLISH DR, #\1\2')

【讨论】:

  • @TylerRussell 你可以试试这个基于正则表达式的解决方案
  • 谢谢。我会在星期一回到办公室时试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多