#python #pandas #loops
#python #pandas #циклы
Вопрос:
У меня есть фрейм данных в качестве:
a = {'TXI': ['TXI|GS|-4.08|ABCD', 'TXI|TX|0', 'TXI|SP|7.06|ABCD']}
a = pd.DataFrame (a, columns = ['TXI'])
Я пытаюсь удалить последние 5 символов на основе starts with, чтобы получить результат, подобный b:
b = {'TXI': ['TXI|GS|-4.08', 'TXI|TX|0', 'TXI|SP|7.06']}
b = pd.DataFrame (b, columns = ['TXI'])
Приведенный ниже код не обновляет фрейм данных. Где не так?
for i in a.TXI:
if not i.startswith('TXI|TX'):
i = i[:-5]
Комментарии:
1. просто замените этим кодом a.TXI = i[:-5], внутри условия if
Ответ №1:
вы можете сделать это с помощью assign и apply:
a = a.assign(TXI = lambda x: x['TXI'].apply(lambda s: s[:-5] if s.startswith('TXI|TX') else s ))
результатом будет:
TXI
0 TXI|GS|-4.08|ABCD
1 TXI
2 TXI|SP|7.06|ABCD