Я работаю с текстовыми данными, и я просто хотел бы заполнить новый столбец на основе существующего столбца.Использование split для заполнения столбца в Dataframe Pandas
Пример: столбец sourceEncodedID
может иметь значение, как a.b.c
, и я хотел бы извлечь только вторую часть строки, b
, если есть вторая часть доступна. Вот некоторые примеры значений:
sourceEncodedID Branch
a.b.c b
c.r.d r
a a
p p
Для достижения этой цели, я придумал следующий код:
for i in range(0,20350):
if len(str(artifacts.sourceEncodedID[i]).split('.')) > 1:
artifacts['branch'][i] = str(artifacts.sourceEncodedID[i]).split('.')[1]
else:
artifacts['branch'][i] = str(artifacts.sourceEncodedID[i])
Есть только 20k строк в dataframe и пока этот кусок коды занять минуты выполнить, прежде чем не закончите и не отрисуйте мой браузер (я использую ipython notebook
). Я бы подумал, что это сработает через пару секунд.
В этом коде есть что-то явно глупое, что я не могу уловить? Как это исправить?
спасибо, это сделало работу. Не могли бы вы указать на глупость, которая не очевидна для меня, в моем коде? – Patthebug
@Patthebug, я обновил свой ответ - пожалуйста, проверьте – MaxU
Спасибо за добавление объяснения, я ценю это! Я предполагаю, что это просто немного разочаровывает, потому что нужно знать векторизованные функции панд, а возврат к основам стоит вам с точки зрения времени. Я согласен, что векторизованные решения более аккуратные, но вы должны их знать. Одна функция за один раз! – Patthebug