如何从具有条件的 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]
我有这个系列:
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]