不确定是应该修复正则表达式模式还是通过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进行后处理。 谢谢!
pd.Series([text,text]).str.extractall(regex).groupby(level=0).first()
- ankypd.Series([text, "不匹配的随机事物"])
,那么就没有第二行了。因为第二个文本没有匹配到任何内容,但我仍然希望保留其行并填充NaN
条目。希望您能理解我的意思。 - arnaudseries.str.extractall(regex).groupby(level=0).first().reindex(series.index)
这样链接一个.reindex
即可吗? - anky