-1

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

4

1 回答 1

2

我不完全确定我关注你,但假设你的意思是你有一个看起来像的 DataFrame

>>> 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. size,它计算每个组的大小
  3. order,它返回Series按值排序的
  4. ilocSeries,这让我们可以选择按位置的最后 10 个条目

这会产生 a Series,但您可以DataFrame通过将其传递给pd.DataFrame.

于 2013-10-17T03:59:06.250 回答