我在 python 中有一个 pandas 数据框,其中包含“a”、“b”、“c”列。'a','b' 对是唯一的并且重复多次。'c' 一直在变化。我想找到出现最多的 10 对 'a','b' 并将它们放入数据框中,但不知道如何。任何帮助表示赞赏。
问问题
187 次
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
这可以分为四个部分:
groupby
(A, B)
,它按元组对数据进行分组size
,它计算每个组的大小order
,它返回Series
按值排序的iloc
Series
,这让我们可以选择按位置的最后 10 个条目
这会产生 a Series
,但您可以DataFrame
通过将其传递给pd.DataFrame
.
于 2013-10-17T03:59:06.250 回答