我有pandas数据框,我需要用另一个值替换vale的一部分
例如。我有
HF - Antartica
HF - America
HF - Asia
其中我想替换HF -
部分
因此结果将是
Hi Funny Antartica
Hi Funny America
Hi Funny Asia
我已经尝试过pd.replace()但它不起作用,因为我只需要替换一部分字符串,而不是整个字符串
答案 0 :(得分:9)
您似乎需要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
答案 1 :(得分:5)
要添加@ jezrael的答案,您需要包含regex=True
,否则会直接匹配。此外,它还会替换数据框中所有列的值。如果您不打算这样做,您可以过滤到列然后替换。要替换数据框中的所有值,请尝试:
df.replace('HF', 'Hi Funny', regex=True)
您还可以提供基于列表的模式和替换值。文档here中提供了完整的选项集。
所以如果数据框是:
>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
答案 2 :(得分:0)
我想再分享一件非常重要的事情,您可以将句号“。”替换为“。”。正常句号
df['label']=df.label.replace({"\. ": "."},regex=True)