关于ZAKER 融媒体解决方案 合作 加入

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

CocoaChina 10-23

对于带有字典的 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 ) )

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

c1 c20 AD AD1 BD BD c1 c20 A AD1 B c1 c20 A A1 B B0 A1 BName: c1, dtype: object

使用 Pandas 0.24.0:

c1 c20 AD AD1 BD BD c1 c20 AD AD1 BD c1 c20 AD AD1 BD BD0 A1 BName: c1, dtype: object

对我来说看起来像是一只熊猫虫 , 还是我错过了什么?

最佳答案

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

Fixed regression in 07001 where regex=True was only replacing patterns matching the start of the string ( GH25259 )

如您所见 , 只有

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

不能正常工作 . 现在 , 此问题已解决 .

以上内容由"CocoaChina"上传发布 查看原文

觉得文章不错,微信扫描分享好友

扫码分享