替换pandas数据框中的部分字符串

Mr.*_*ply 9 python pandas

我有pandas数据框,我需要用另一个值替换vale的一部分

例如.我有

HF - Antartica
HF - America
HF - Asia
Run Code Online (Sandbox Code Playgroud)

其中我想替换HF -部分因此结果将是

Hi Funny Antartica
Hi Funny America
Hi Funny Asia
Run Code Online (Sandbox Code Playgroud)

我已经尝试过pd.replace()但它不起作用,因为我只需要替换一部分字符串,而不是整个字符串

jez*_*ael 11

看来你需要Series.replace:

print (df)
              val
0  HF - Antartica
1    HF - America
2       HF - Asia

print (df.val.replace({'HF -':'Hi'}, regex=True))
0    Hi Antartica
1      Hi America
2         Hi Asia
Name: val, dtype: object
Run Code Online (Sandbox Code Playgroud)

类似的解决方案str.replace:

print (df.val.str.replace('HF -', 'Hi'))
0    Hi Antartica
1      Hi America
2         Hi Asia
Name: val, dtype: object
Run Code Online (Sandbox Code Playgroud)

  • `str.replace(..., regex=True)` 明显比 `Series.replace(..., regex=True)` 快 (2认同)

kur*_*der 7

要添加到@ jezrael的答案,您需要包含regex=True否则它将直接匹配.此外,它还会替换数据框中所有列的值.如果您不打算这样做,您可以过滤到列然后替换.要替换数据框中的所有值,请尝试:

df.replace('HF', 'Hi Funny', regex=True)

您还可以提供基于列表的模式和替换值.这里的文档中提供了完整的选项集.

所以如果数据框是:

>df = pd.DataFrame({'Column': ['HF - Antartica', 'HF - America', 'HF - Asia']})
>df.replace('HF', 'Hi Funny', regex=True)
Run Code Online (Sandbox Code Playgroud)

应该打印:

                 Column
0  Hi Funny - Antartica
1    Hi Funny - America
2       Hi Funny - Asia
Run Code Online (Sandbox Code Playgroud)