я пытаюсь извлечь некоторые данные из dataframe, однако следующий запрос только извлечь первый матч и игнорирует остальные матчи, например, если все данные:найти все регулярное выражение соответствует из колонки панды dataframe
df['value']=
0 123 blah blah blah, 456 blah blah blah, 129kfj blah blah
1 237 blah blah blah, 438 blah blah blah, 365kfj blah blah
...
и регулярное выражение:
df['newCol']=df['value'].str.extract("[0-9]{3}")
я хочу, чтобы результат новое имя столбца "NEWCOL", как:
newCol
------
123,456,129
237,438,365
...
но фактический результат я получаю только первый номер:
newCol
------
123
237
, что здесь не так? :(
спасибо
UPDATE:.
благодаря MaxU я нашел решение, только несколько предложений, которые я имел панда 0.18.1 так extractall не работали для меня до тех пор пока я обновил pandas до 0,19, поэтому не забудьте проверить свою версию pandas, если у вас есть проблема с Extractall ... second, apply (','. join) не работает для меня, потому что у меня были некоторые не строковые значения (значения Null), и это могло так что я использовал Лямбду и, наконец, работал с небольшой модификацией решения MaxU.
x['value'].str.extractall(r'(\d{3})').unstack().apply(lambda x:','.join(x.dropna()), axis=1)
'extract' возвращает только первый матч. Вы хотите ['extractall'] (http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.Series.str.extractall.html#pandas.Series.str.extractall). См. Ответ MaxU –