从pandas数据框列中查找所有正则表达式匹配项

 

问题描述:

我正在尝试从数据框中提取一些数据,但是以下查询仅提取第一个匹配项,而忽略其余匹配项,例如,如果整个数据为:

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

这是怎么了 :(

谢谢

更新:

感谢MaxU,我找到了解决方案,仅提出了几点建议。我有Pandas
0.18.1,所以直到我将Pandas更新到0.19之前,extractall才对我有用,所以如果您遇到Extractall的问题,请记住检查您的熊猫版本…第二,apply(’,’。join)没有之所以为我工作,是因为我有一些非字符串值(Null值),并且它无法处理它,所以我使用了Lambda,最后对MaxU解决方案进行了少量修改。

x['value'].str.extractall(r'(\d{3})').unstack().apply(lambda x:','.join(x.dropna()), axis=1)

我在Windows 8.1 64位计算机上运行python 2.7 32位。我有Access 2013和一个尝试从python和pyodbc访问的.accdb文件。我可以在64位ODBC管 ...