首页 > 解决方案 > Pandas DataFrame .replace() 仅替换字符串开头的子字符串

问题描述

我想在整个数据框中替换子字符串的所有实例。如果我一次做一个子字符串,它会起作用:

tdf = pd.DataFrame([{'X':'abc','Y':'def','Z':'ghi'},
                {'X':'abc2','Y':'def2','Z':'ghi2'}],index = [0,1])
In: tdf
Out: 
      X     Y     Z
0   abc   def   ghi
1  abc2  def2  ghi2

In: tdf.replace('e','2',regex=True)
Out: 
      X     Y     Z
0   abc   d2f   ghi
1  abc2  d2f2  ghi2

但是如果我使用两个匹配的列表(我有很多子字符串要替换),我似乎只能替换字符串开头的子字符串:

In:tdf.replace(['e','a'],['1','2'],regex=True)
Out: 
      X     Y     Z
0   2bc   def   ghi
1  2bc2  def2  ghi2

如何在一行中的任何地方用它们各自的值替换所有子字符串?

熊猫版本'0.24.1'

标签: pandaspython-3.7

解决方案


你可以通过dict

tdf=tdf.replace(dict(zip(['e','a'],['1','2'])),regex=True)
      X     Y     Z
0   2bc   d1f   ghi
1  2bc2  d1f2  ghi2

推荐阅读