我有一个pandas数据框,需要用另一个值替换其中的一部分值。
例如,我有:
HF - Antartica
HF - America
HF - Asia
我想替换其中的HF -
部分,因此结果将为
Hi Funny Antartica
Hi Funny America
Hi Funny Asia
我尝试过pd.replace()
,但它不能按照我需要的方式替换字符串中的一个部分,而不是整个字符串。
看起来你需要使用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
与 str.replace
类似的解决方案:
print (df.val.str.replace('HF -', 'Hi'))
0 Hi Antartica
1 Hi America
2 Hi Asia
Name: val, dtype: object
series.replace
解决方案无论是使用regex=True
还是regex=False
都不能在我的数据框中进行替换。我不知道为什么,但当我使用str.replace
时,它可以正常工作。 - mikeystr.replace(..., regex=True)
is significantly faster than Series.replace(..., regex=True)
- Maurício Collaça补充@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)
应打印: Column
0 Hi Funny - Antartica
1 Hi Funny - America
2 Hi Funny - Asia
我想分享另一件非常重要的事情,您可以将句号“。”替换为空格和句号“。 ”为正常的句号“。”
df['label']=df.label.replace({"\. ": "."},regex=True)