如何从具有条件的 pandas 系列中删除字符?

How to remove characters from a pandas series with a condition?

我有这个系列:

pokemons=pd.Series(['AlakazamMega Alakazam','BlastoiseMega Blastoise','PinsirMega Pinsir'])

我想删除 'Mega' 之前的重复名称,例如 'BlastoiseMega Blastoise' 将变为 'Mega Blastoise'。我正在处理一个更大的系列,所以我需要一些通常写的东西.

使用Series.str.replace,但仅适用于拆分 DataFrame 的两列都相等的值:

pokemons=pd.Series(['AlakazamMega Alakazam',
                    'BlastoiseMega Blastoise',
                    'StayITHereMega Blastoise'])


df = pokemons.str.split('Mega\s+', expand=True)

pokemons = pokemons.str.replace(r'^.+(Mega)',r'').where(df[0] == df[1], pokemons)
print (pokemons)
0               Mega Alakazam
1              Mega Blastoise
2    StayITHereMega Blastoise
dtype: object

编辑:

如果需要删除Mega之前的所有值:

pokemons = pokemons.str.replace(r'^.+(Mega)',r'')
print (pokemons)
0     Mega Alakazam
1    Mega Blastoise
2    Mega Blastoise
dtype: object

您可以使用拆分:

short_pokemons = ['Mega'+poke.split('Mega')[1] for poke in pokemons]