假设我有一个数据帧
A B C
0 1 2 a
1 6 5 c
2 5 4 b
3 2 5 d
4 4 9 q
5 1 2 a
6 5 4 b
7 1 2 a
8 1 4 c
我想找出两个最频繁的行(行中的每个值都完全相同)和相应的频率。在本例中,行是1,2,a和5,4,b。频率是3和2。
我知道如何找到我可以使用模式函数的最频繁的行。我还知道我可以使用Counter在一列中选择多个频繁值。在python中,如何选择每列的值完全相同的多个(如2或5)频繁行?非常感谢!
发布于 2018-08-05 05:25:54
也许你可以在similar approach之后尝试使用groupby
和nlargest()
print(df.groupby(df.columns.tolist()).size().nlargest(2))
发布于 2018-08-05 05:27:20
还可以agg
和count
s = df.agg(tuple,1)
s = s.groupby(s).count()
(1, 2, a) 3
(1, 4, c) 1
(2, 5, d) 1
(4, 9, q) 1
(5, 4, b) 2
(6, 5, c) 1
dtype: int64
然后举个例子
s.nlargest(2)
(1, 2, a) 3
(5, 4, b) 2
https://stackoverflow.com/questions/51689625
复制相似问题