我在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,以便可以将它们打印出来?
谢谢!
答案 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