不确定我是否应该修复我的正则表达式模式,或者使用 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/