我在python中有一个pandas数据帧,列'a','b','c'。 'a','b'对是唯一的并且重复多次。 'c'一直在变化。我想找到最多出现的10对'a','b'并将它们放在数据帧中,但不知道如何。任何帮助表示赞赏。
答案 0 :(得分:2)
我不完全确定我会关注你,但假设你的意思是你有一个类似
的数据框架>>> N = 1000
>>> df = pd.DataFrame(np.random.randint(0, 10, (N, 3)), columns="A B C".split())
>>> df.head()
A B C
0 7 4 5
1 5 1 3
2 8 9 8
3 2 3 0
4 2 3 0
并且您只想计算(A,B)对,这很容易:
>>> df.groupby(["A", "B"]).size().order().iloc[-10:]
A B
6 1 13
1 0 14
4 0 14
7 2 14
1 6 15
8 2 15
1 8 16
2 6 16
6 4 16
7 4 16
dtype: int64
这可以分为四个部分:
groupby
,按(A, B)
元组size
,用于计算每个组的大小order
,返回按值排序的Series
iloc
,可让我们按位置选择Series
中的最后10个条目这会产生Series
,但您只需将DataFrame
传递给pd.DataFrame
就可以制作{{1}}。