2017-02-19 101 views
2

我有熊貓數據幀,其中我需要用另一個值替換一部分的值替換熊貓數據幀中的部分字符串

例如。我有

HF - Antartica 
HF - America 
HF - Asia 

外面我想更換ONY的HF -部分 因此結果將是

Hi Funny Antartica 
Hi Funny America 
Hi Funny Asia 

我已經試過pd.replace(),但它不工作,因爲我需要字符串的只是其中的一部分替換,而不是整個字符串

+0

可以顯示數據幀的聲明? – RomanPerekhrest

回答

3

看來你需要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 
2

要添加到@ 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