Получить символы перед подчеркиванием

#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]