Удалить указанные c символов из столбца pandas? - PullRequest
0 голосов
/ 13 февраля 2020

Здравствуйте. У меня есть датафрейм, в котором я хочу удалить определенный c набор символов 'fwd' из каждой строки, которая начинается с него. Проблема, с которой я сталкиваюсь, заключается в том, что код, который я использую для его выполнения, удаляет все, что начинается с буквы «f».

мой фрейм данных выглядит так:

  summary 
0 Fwd: Please look at the attached documents and take action 
1 NSN for the ones who care
2 News for all team members 
3 Fwd: Please take action on the action needed items 
4 Fix all the mistakes please 

Когда я использовал код:

df['Clean Summary'] =  individual_receivers['summary'].map(lambda x: x.lstrip('Fwd:'))

В итоге получается фрейм данных, который выглядит следующим образом:

      summary 
0 Please look at the attached documents and take action 
1 NSN for the ones who care
2 News for all team members 
3 Please take action on the action needed items 
4 ix all the mistakes please 

Я не хочу, чтобы последний ряд потерял F в 'Fix'.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020

Вы должны использовать regex, помня ^, указывает на запуск с:

df['Clean Summary'] = df['Summary'].str.replace('^Fwd','')

Вот пример:

df = pd.DataFrame({'msg':['Fwd: o','oe','Fwd: oj'],'B':[1,2,3]})
df['clean_msg'] = df['msg'].str.replace(r'^Fwd: ','')
print(df)

Вывод:

       msg  B clean_msg
0   Fwd: o  1         o
1       oe  2        oe
2  Fwd: oj  3        oj
0 голосов
/ 13 февраля 2020

Вы проигрываете не только 'F', но также 'w', 'd' и ':'. Так работает lstrip - он удаляет все комбинации символов в переданной строке.

Вы должны использовать x.replace('Fwd:', '', 1)

1 - обеспечивает что удаляется только первое вхождение строки.

...