熊猫0.24替换正则表达式问题

时间:2019-02-05 17:00:36

标签: python pandas

使用熊猫0.19.2 python 3.6.0带有字典的DataFrame.replace作用于子字符串(例如“ find”),Series.replace也起作用。 Pandas 0.24.0 python 3.6.8似乎对DataFrames的整个字符串起作用(如“ match”),而对Series的子字符串起作用(如“ find”)。

df = pd.DataFrame({'c1':['AD','BD'],'c2':['AD','BD']})
print(df)
print(df.replace(to_replace={'c1':{r'D': ''}, 'c2':{r'BD': ''}},regex=True))
print(df.replace(to_replace={r'D': ''},regex=True))
print(df['c1'].replace(to_replace=r'D', value='',regex=True))

Pandas 0.19.2产生了(为便于阅读,我添加了一些空白行):

   c1  c2
0  AD  AD
1  BD  BD

  c1  c2
0  A  AD
1  B    

  c1 c2
0  A  A
1  B  B

0    A
1    B
Name: c1, dtype: object

使用熊猫0.24.0:

   c1  c2
0  AD  AD
1  BD  BD

   c1  c2
0  AD  AD
1  BD    

   c1  c2
0  AD  AD
1  BD  BD

0    A
1    B
Name: c1, dtype: object

对我来说就像熊猫虫,还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

该错误已列在Fixed regressions for Pandas 0.24.2中:

  

修复了DataFrame.replace()中的回归问题,其中regex=True仅替换与字符串开头(GH25259)匹配的模式

如您所见

print(df.replace(to_replace={'c1':{r'D': ''}, 'c2':{r'BD': ''}},regex=True))
print(df.replace(to_replace={r'D': ''},regex=True))

没有正常工作。现在,问题已解决。