Как извлечь подстроку из столбца переменной длины в кадре данных панд? - PullRequest
0 голосов
/ 09 ноября 2018

Привет! Я пытаюсь выполнить что-то похожее на функцию mid в excel с помощью столбца в pandas dataframe в python. У меня есть столбец с названиями лекарств + сильные стороны и т.д. переменной длины. Я просто хочу вытащить первую «часть» имени и поместить результат в другой столбец в кадре данных.

Пример:

столбец данных

MEDICATION_NAME
acetaminophen 325 mg
a-hydrocort 100 mg/2 ml

Желаемый результат

MEDICATION_NAME               GENERIC_NAME
acetaminophen 325 mg          acetaminophen     
a-hydrocort 100 mg/2 ml       a-hydrocort

Что я пробовал

df['GENERIC_NAME'] = df['MEDICATION_NAME'].str[:df['MEDICATION_NAME'].apply(lambda x: x.find(' '))]

В основном я хочу применить результат, специфичный для строки

df['GENERIC_NAME'] = df['MEDICATION_NAME'].apply(lambda x: x.find(' '))

до функции

str[:] 
?

Спасибо

Ответы [ 4 ]

0 голосов
/ 09 ноября 2018

Вы можете использовать str.partition [pandas-doc] здесь:

df['GENERIC_NAME'] = df['MEDICATION_NAME'].str.partition(' ')[0]

Для данного столбца это дает:

>>> g.str.partition(' ')[0]
0    acetaminophen
1      a-hydrocort
Name: 0, dtype: object

partition сам создает из серии фрейм данных с тремя столбцами: before, match и after:

>>> df['MEDICATION_NAME'].str.partition(' ')
               0  1            2
0  acetaminophen          325 mg
1    a-hydrocort     100 mg/2 ml
0 голосов
/ 09 ноября 2018

Используйте str.extract для использования полных функций регулярных выражений:

df["GENERIC_NAME"] = df["MEDICATION_NAME"].str.extract(r'([^\s]+)')

Это захватить первое слово, ограниченное пробелом. Так что защитит от случаев, когда сначала есть пробел.

0 голосов
/ 09 ноября 2018

Попробуйте это:

df['GENERIC_NAME'] = df['MEDICATION_NAME'].str.split(" ")[0]
0 голосов
/ 09 ноября 2018

DO с str.split

df['MEDICATION_NAME'].str.split(n=1).str[0]
Out[345]: 
0    acetaminophen
1      a-hydrocort
Name: MEDICATION_NAME, dtype: object
#df['GENERIC_NAME']=df['MEDICATION_NAME'].str.split(n=1).str[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...