如何使用 str.replace 一次替换多个对?

Man*_*lai 2 python string replace pandas

目前我正在使用以下代码进行替换,这有点麻烦:

df1['CompanyA'] = df1['CompanyA'].str.replace('.','')
df1['CompanyA'] = df1['CompanyA'].str.replace('-','')
df1['CompanyA'] = df1['CompanyA'].str.replace(',','')
df1['CompanyA'] = df1['CompanyA'].str.replace('ltd','limited')
df1['CompanyA'] = df1['CompanyA'].str.replace('&','and')
df1['Address1A'] = df1['Address1A'].str.replace('.','')
df1['Address1A'] = df1['Address1A'].str.replace('-','')
df1['Address1A'] = df1['Address1A'].str.replace('&','and')
df1['Address1A'].str.replace(r'\brd\b', 'road')
df1['Address2A'] = df1['Address2A'].str.replace('.','')
df1['Address2A'] = df1['Address2A'].str.replace('-','')
df1['Address2A'] = df1['Address2A'].str.replace('&','and')
df1['Address2A'].str.replace(r'\brd\b', 'road')
Run Code Online (Sandbox Code Playgroud)

为了使即时更改更容易,我的理想情况是这样的:

df1['CompanyA'] = df1['CompanyA'].str.replace(('&','and'), ('.', ''), ('-','')....)
df1['Address1A'] = df1['Address1A'].str.replace(('&','and'), ('.', ''), ('-','')....)
df1['Address2A'] = df1['Address2A'].str.replace(('&','and'), ('.', ''), ('-','')....)
Run Code Online (Sandbox Code Playgroud)

这样我就可以输入/更改我想为特定列替换的内容,而无需调整多行代码。

这可能吗?

Iva*_*sky 11

您可以创建字典并将其传递给函数,replace()而无需多次链接或命名函数。

replacers = {',':'','.':'','-':'','ltd':'limited'} #etc....
df1['CompanyA'] = df1['CompanyA'].replace(replacers)
Run Code Online (Sandbox Code Playgroud)

  • 你可以将字典传递给“replace()”吗?我在这里很困惑。在 Python 3.8.5 中,评估 `"abcdefghi".replace({'b':'B', 'g':'G'})` 会给出 `TypeError: Replace预期至少 2 个参数,得到 1`。我错过了什么吗? (19认同)
  • 是的,对于新手来说,它可能更具可读性和友好性,但是我认为传递一个简单的字典并不太复杂。我想说字典应该在 for 循环和 pandas 一起学习之前学习,但这当然是一个观点,感谢您的评论。 (5认同)
  • 这是我们正在使用的 pandas 替换,而不是 python 的内置替换:) (4认同)
  • 我喜欢这个简洁的答案,for循环也没有什么问题,对于python菜鸟来说更具可读性和友好性 (2认同)

归档时间:

查看次数:

782 次

最近记录:

5 年,5 月 前