#pandas #string #split
Вопрос:
У меня есть фрейм данных pandas в следующем формате
name
BC_new-0
BC_new-1
BC_new-2
Хотел бы извлечь все, что находится ниже»_», и добавить это в новый столбец
df['value'] = str(df['name']).split("_")[0]
Но я получаю следующие результаты
value
0 BC
0 BC
0 BC
Любые предложения о том, как этот «0» не может присутствовать в выходных данных. Любые зацепки будут оценены по достоинству.
Комментарии:
1.Я думаю, ты имел в виду
df['value'] = df['name'].str.split("_")[0]
Series.str.split
неstr.split
2. @HenryEcker: Я не мог этого сделать, так как я получаю эту ошибку — Ошибка значения: Длина значений (2) не соответствует длине индекса (1231)
3. Ой. Я пропустил
str
… >df['value'] = df['name'].str.split("_").str[0]
Ответ №1:
Я мог бы использовать str.extract
здесь:
df['value'] = df['name'].str.extract(r'^([^_] )')
Как следует из приведенного выше комментария, если вы хотите использовать разделение строк, используйте str.split
:
df['value'] = df['name'].str.split("_").str[0]
Комментарии:
1. Прошу прощения, я допустил ошибку выше. Нужен еще
str
один, чтобы получить[0]
из каждой строки ->df['value'] = df['name'].str.split("_").str[0]
2. df[‘имя’].str.сплит(«_»).str[0]