2017-08-01 72 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