Abomasnow                   Grass   Ice     494     90  92  75  92  85  60
AbomasnowMega Abomasnow     Grass   Ice     594     90  132     105 132 105
Abra                    Psychic     Psychic     310     25  20  15  105 55
Absol                      Dark     Dark    465     65  130     60  75  60  75
AbsolMega Absol


我有一个像这样的数据框,其中包含一些脏索引值。例如:我需要将值从AbomasnowMega Abomasnow更改为Mega Abomasnow,并且与其他类似情况类似,即,我需要在存在Mega的地方执行此操作。我怎么做?

最佳答案

这是一个可以在正则表达式中使用.str.replace()方法的选项,对于.*(?=Mega),它将删除字符串中最后一个Mega之前的所有字符,以防万一您不熟悉regex.*匹配所有字符贪婪地,?=是前瞻语法,它将匹配模式直接约束在Mega前面:

df.index = df.index.str.replace(".*(?=Mega)", "")

df.index
# Index(['Abomasnow', 'Mega Abomasnow', 'Abra', 'Absol', 'Mega Absol'], dtype='object', name=0)

08-20 03:00