我可以帮您进行翻译。以下是需要翻译的内容:
我希望结果是一个名为"newCol"的新列,如下所示:
但我实际得到的结果只有第一个数字。
我正在尝试从数据框中提取一些数据,但是下面的查询语句只会提取第一个匹配项并忽略其余的匹配项。例如,如果整个数据如下:
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,所以extractall对我无效,直到我将pandas更新到0.19,因此请记住检查您的pandas版本是否与Extractall存在问题...其次,apply(',' .join)对我无效,因为我有一些非字符串值(Null值),它无法处理,所以我使用了Lambda,并且最终在MaxU解决方案的小修改下成功了。
x['value'].str.extractall(r'(\d{3})').unstack().apply(lambda x:','.join(x.dropna()), axis=1)
extract
仅返回第一个匹配项。您需要extractall
。请参见MaxU的回答。 - Moses Koledoye