使用熊猫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
对我来说就像熊猫虫,还是我错过了什么?
答案 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))
没有正常工作。现在,问题已解决。