Как удалить персонажей из серии панд с условием? - PullRequest
2 голосов
/ 23 сентября 2019

У меня есть эта серия:

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

Я хочу удалить дублирующееся имя перед «Мега», поэтому, например, «BlastoiseMega Blastoise» станет «Мега Blastoise». Я работаю с оченьбольшая серия, поэтому мне нужно что-то вообще написано.

Ответы [ 2 ]

4 голосов
/ 23 сентября 2019

Использовать Series.str.replace, но только для значений с одинаковыми значениями в обоих столбцах разделенного кадра данных:

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


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

pokemons = pokemons.str.replace(r'^.+(Mega)',r'\1').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'\1')
print (pokemons)
0     Mega Alakazam
1    Mega Blastoise
2    Mega Blastoise
dtype: object
1 голос
/ 23 сентября 2019

Вы можете использовать сплит:

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