如何使用regex或pandas过滤NLTK的FreqDist计数器

2024-04-18 20:07:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个FreqDist计数器对象,用一个设定的长度计算元组。长度可以是两个或更多,但在counter对象中是相同的。你知道吗

例如:

('a','b','c')   5
('a','b','d')   8
('c','d','a')   2
('a','a','e')   3
('a','b','e')   3

我的目标是过滤FreqDist计数器,在本例中使用前两个元素,并识别计数最高的元组。如果元组包含两个元素,那么我只会过滤第一个元素,总是把最后一个元素留作笑料。你知道吗

步骤#1过滤开启('a','b',*)

('a','b','c')   5
('a','b','d')   8
('a','b','e')   3

第2步将('a','b','d')标识为计数最高的元组。你知道吗

当然,肯定有一种方法可以帮助做到这一点,但我的研究迄今没有透露任何东西。非常感谢你的帮助。你知道吗


Tags: 对象方法元素目标counter计数器步骤标识
1条回答
网友
1楼 · 发布于 2024-04-18 20:07:25

我把你的数据放到数据框里

df=pd.DataFrame({'count':[5,8,2,3,3]},index=[('a','b','c'),('a','b','d') ,('c','d','a'),('a','a','e') ,('a','b','e')])

s=df.loc[list(filter(lambda x: (x[0] == 'a')&(x[1] == 'b'), df.index))]
s
Out[39]: 
           count
(a, b, c)      5
(a, b, d)      8
(a, b, e)      3

s.sort_values('count').tail(1)
Out[44]: 
           count
(a, b, d)      8

相关问题 更多 >