提取最长的匹配

时间:2019-04-07 23:02:16

标签: python regex pandas

考虑这个简单的设置

import pandas as pd

df = pd.DataFrame({'id' : [1,2,3],
                   'text' : ['stack-overflow',
                             'slack-overflow',
                             'smack-over']})
df
Out[9]: 
   id            text
0   1  stack-overflow
1   2  slack-overflow
2   3      smack-over

我有一个给定的正则表达式,我想提取最长匹配项。我知道我可以使用str.extractall来获取所有匹配项,但是如何才能有效地获取最长的匹配项(作为数据帧中的列df['mylongest'])?

当然,在此示例中,最长的匹配项是溢出,溢出和斑点。

df.text.str.findall(r'(\w+)')
Out[10]: 
0    [stack, overflow]
1    [slack, overflow]
2        [smack, over]
Name: text, dtype: object

2 个答案:

答案 0 :(得分:2)

让我们将max映射到str.findall的结果。我使用functools.partial来避免使用lambda。

from functools import partial

f = partial(max, key=len)
df['text'].str.findall(r'(\w+)').map(f)

0    overflow
1    overflow
2       smack
Name: text, dtype: object

答案 1 :(得分:2)

如果您想尝试使用 if let VC = segue.destination as? p2SheetViewController { VC.2BottomSheetDelegate = self VC.parentView = p2Container p2VC = VC } else if let vc = segue.destination as? BottomP1SheetViewController { vc.bottomSheetDelegate = self vc.parentView = p1Container vc.homePgButton = homePgButton vc.2BottomSheet = p2VC }

pandas