#python #pandas #string #dataframe #split
#python #pandas #строка #фрейм данных #разделить
Вопрос:
У меня есть df:
id value
0 a_john_doe 123
1 b_robert_frost 456
Я хочу перезаписать столбец ‘id’, чтобы отрезать все после второго ‘_’, чтобы получить это:
id value
0 a_john 123
1 b_robert 456
Я пытаюсь выполнить разделение, а затем воссоединиться, но это выдает ошибку:
Ошибка типа: элемент последовательности 0: ожидаемый экземпляр str, список найден
Я могу сделать то же самое с жестко запрограммированной строкой, поэтому я не слишком уверен, где я ошибаюсь:
print('_'.join('a_john_doe'.split('_')[:2]))
# test gives back 'a_john'
df = pd.DataFrame({'id':['a_john_doe','b_robert_frost'], 'value':['123','456']})
df.id = '_'.join(df.id.str.split('_')[:2])
print(df)
Ответ №1:
Давайте сделаем:
df['id'] = ['_'.join(x.split('_')[:2]) for x in df['id']]
Или в вашем стиле:
df['id'] = df['id'].str.split('_')[:2].agg('_'.join)
Вывод:
id value
0 a_john 123
1 b_robert 456