python - Pandas 提取全部合并

标签 python regex pandas

不确定我是否应该修复我的正则表达式模式,或者使用 pandas 处理更多内容。

这是一个模拟设置:

import re
import pandas as pd

regex = r"(?P<adv>This)|(?P<noun>test)"
texts = ["This is a test", "Random stuff with no match"]
series = pd.Series(texts)

我想找到组的所有匹配项( <adv><noun> —— 通常有两个以上)。这些组被设计为排他性,因此我希望只有一行结果包含捕获的字符串/NaN。

当前输出:多索引行,只针对有匹配的文本

>>> print(series.str.extractall(regex))
          adv  noun
  match            
0 0      This   NaN
  1       NaN  test

预期输出:每个输入文本一行,每组聚合匹配

          adv  noun
0        This  test
1         NaN   NaN

有机会参与其中吗?要么修复正则表达式,要么用 Pandas 进行后处理。 谢谢!

最佳答案

你可以试试;

series.str.extractall(regex).groupby(level=0).first()

    adv  noun
0  This  test

关于python - Pandas 提取全部合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894015/

相关文章:

python - 如何确保用户在 python django 中只投票一次?

python - Python 3 和 Python 2 之间 type() 和 hasattr() 的区别

python - 重新索引数据框并连接列

python - 如何在 Python/Pandas 中处理 "Object of type ' Timestamp' is not JSON Serialible”?

python - 一旦达到特定值,就删除高于特定值的行

python - 为什么我的 Popen 管道堵塞?

python - 使用 imaplib 只获取电子邮件的标题?

Python 正则表达式;替换部分比赛

r - 使用 gsub 插入反斜杠

javascript - 正则表达式用两个分隔符分割字符串