如何在python的数据框中找到最频繁的两栏组合

时间:2018-10-29 01:39:38

标签: python pandas

我在pandas数据框中的数据如下:

df = pd.DataFrame({'a':[1,2,3,3,4,4,4], 'b':[2,3,4,4,5,5,5]})

因此数据框如下所示:

   a  b
0  1  2
1  2  3
2  3  4
3  3  4
4  4  5
5  4  5
6  4  5

此处的“ a”,“ b”列组合为:12(1),23(1),34(2),45(3)。 我试图选择4和5并打印出来,因为它们的组合 最多(3次)。

我的代码是:

counts = df.groupby(['a','b']).size().sort_values(ascending=False)
print(counts)

输出:

a  b
4  5    3
3  4    2
2  3    1
1  2    1
dtype: int64

但这仅给我一列[3,2,1,1]。这是数字组合计数。 如何分别访问元素4和5,以便可以将它们打印出来?

谢谢!

3 个答案:

答案 0 :(得分:2)

熊猫GroupBy对象由石斑鱼键索引。在有多个键的情况下,这将意味着一个MultiIndex。您只需提取结果的第一个索引即可给出代表最常见组合的tuple

counts.index[0]  # (4, 5)

答案 1 :(得分:2)

使用idxmax,即使结果是有序的,您仍然可以找到最大值的索引

df.groupby(['a','b']).size().idxmax()
Out[15]: (4, 5)

答案 2 :(得分:1)

pandas DataFrame中最简单的一种使用模式。它将在行或列中提供最频繁的值:

>>> df
   a  b
0  1  2
1  2  3
2  3  4
3  3  4
4  4  5
5  4  5
6  4  5

>>> df.mode()
   a  b
0  4  5