Python 3 Pandas Как извлечь строку между двумя '_', с обработкой ошибок в DF? - PullRequest
0 голосов
/ 05 февраля 2019

Этот вопрос относительно близок к существующим ответам о извлечении строк, но мои данные имеют технические недостатки.Данные столбца df выглядят так:

Col1:
2909_10_2018
2909_14_2019
32_13_2019
4200_14_2018
4124__2019

Цель состоит в том, чтобы извлечь строку между двумя "_", за исключением того, что иногда нет строки.

Я пробовал несколько решений, опубликованных в похожихтемы без толку:

try:
   df['Col2'] = re.search('.*abc_[^_]*', df.Col1)
except:
   TypeError:
   df['Col2'] = ''

Производит ""

try:
   df['Col2'] = re.search('_(.*)_', df.Col1)
except:
   TypeError:
   df['Col2'] = ''

Производит ""

df['Col2'] = df.Col1.str.split("_", n = 1, expand = True)

Результаты в ValueError: Неверное количество пройденных элементов 2, размещениеподразумевает 1.

Каков хороший питонический способ извлечь текст между "_" при обработке пропусков?

1 Ответ

0 голосов
/ 05 февраля 2019

Учитывая, что формат не меняется, вы можете использовать функцию lambda, так как вы должны выполнить одну и ту же операцию для каждой строки.Приведенный ниже код также создаст новый столбец с пустыми строками.

Код:

df['Col2'] = df.Col1.apply(lambda x: x.split('_')[1])

Выходные данные:

    Col1           Col2
0   2909_10_2018    10
1   2909_14_2019    14
2   32_13_2019      13
3   4200_14_2018    14
4   4124__2019  
...