2017-08-01 75 views
1

工作,我已經找到了解決辦法,但我還是好奇這是怎麼回事:大熊貓只替換正則表達式

當我嘗試做的大熊貓像這樣替換:

merged4[['column1', 'column2', 'column3']] = merged4[['column1', 'column2', 'column3']].replace(to_replace='.', value=',') 

這不是加工。例如,我嘗試了所有與Inplace不同的變體。由於列是float64,我也做了astype(str)。

然而,當我這樣做:

merged4[['column1', 'column2', 'column3']] = merged4[['column1', 'column2', 'column3']].replace(to_replace='\.', value=',', regex=True)

它的工作般的魅力。

有什麼問題嗎?

回答

1

當您不使用regex=True時,該方法將查找replace_to值的精確匹配。當您使用regex=True時,它也會查找子字符串。所以你的代碼在你使用這個參數的時候工作。 示例

當您不使用regex=True參數時,替換方法將查找系列中replace_to值的精確匹配。

df = pd.DataFrame() 
df['k'] = ['YoYo.','mins.s.s','sos.s.','.','mama.mia'] 
df['k'].replace('.',',') 
 
0  YoYo. 
1 mins.s.s 
2  sos.s. 
3   , 
4 mama.mia 

當您使用regex = True它甚至相匹配的一系列的子串,改變字符串

df = pd.DataFrame() 
df['k'] = ['YoYo.','mins.s.s','sos.s.','.','mama.mia'] 
df['k'].replace('\.',',',regex=True) 
 
0  YoYo, 
1 mins,s,s 
2  sos,s, 
3   , 
4 mama,mia 
+0

是否給予好評,如果你喜歡的解決方案 – Dark