Dataframe Split Text в новый столбец - PullRequest
2 голосов
/ 03 апреля 2020

У меня есть фрейм данных со следующим столбцом MENU_HINT, и я собираюсь создать новый столбец, выбрав третье слово:

MENU_HINT
AUS / Cant (AUS) 
AUS / Darw (AUS)
AUS / YarV (AUS)
AUS / Goul (AUS)

Мой код следующий:

splittext = str(dfresults['MENU_HINT'])
dfresults['City'] = splittext.split()[3]

Что дает мне:

MENU_HINT                City
AUS / Cant (AUS)         Cant
AUS / Darw (AUS)         Cant
AUS / YarV (AUS)         Cant
AUS / Goul (AUS)         Cant

Я после Cant, Darw, YarV, Goul, но это фиксируется на верхнем значении (Cant).

Я знаю, что близко, но кажется, не могу понять проблему (я новичок в python), поэтому любая помощь будет отличной!

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Другое решение заключается в использовании pandas.Series.str.extract с регулярным выражением:

df['City'] = df['MENU_HINT'].str.extract(r'/\s(\w+)')
print(df)

           MENU_HINT  City
0  AUS / Cant (AUS)   Cant
1   AUS / Darw (AUS)  Darw
2   AUS / YarV (AUS)  YarV
3   AUS / Goul (AUS)  Goul

Это предполагает, что за сопоставляемым текстом следует '/', и он может находиться в любой позиции.

1 голос
/ 03 апреля 2020

Используйте Series.str.split с нарезкой:

#fourth value
dfresults['City'] = dfresults['MENU_HINT'].str.split().str[3]

#third value
dfresults['City'] = dfresults['MENU_HINT'].str.split().str[2]
...