如何找到python中pandas数据框中出现最多的前10对

时间:2013-10-17 03:43:25

标签: python pandas dataframe

我在python中有一个pandas数据帧,列'a','b','c'。 'a','b'对是唯一的并且重复多次。 'c'一直在变化。我想找到最多出现的10对'a','b'并将它们放在数据帧中,但不知道如何。任何帮助表示赞赏。

1 个答案:

答案 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

这可以分为四个部分:

  1. groupby,按(A, B)元组
  2. 对数据进行分组
  3. size,用于计算每个组的大小
  4. order,返回按值排序的Series
  5. iloc,可让我们按位置选择Series中的最后10个条目
  6. 这会产生Series,但您只需将DataFrame传递给pd.DataFrame就可以制作{{1}}。