我有这样的数据框
+---+---+---
| A| B| C|
+---+---+---
| 1| 3| 1|
| 2| 1| 1|
| 2| 3| 1|
| 1| 2| 1|
| 3| 1| 1|
| 1| 2| 1|
| 2| 1| 1|
| 1| 3| 1|
| 1| 2| 1|
+---+---+---
我想将数据缩减为仅按降序排列的两列(A 和 B)的最频繁组合 输出应该看起来像
+---+---+-----+
| A| B|count|
+---+---+-----+
| 1| 2| 3|
| 2| 1| 2|
+---+---+-----+
我写了这段代码,但它没有排序
import pandas as pd
import numpy as np
data=pd.read_csv("file.csv",sep=',')
gps = data[['A','B','C']]
gps1=gps.groupby(['A','C'])
gps1=gps1.count()
gps1.columns=['count']
gps1.sort_values(['count'],ascending=False)
print(gps1)
最佳答案
使用nlargest
gps.groupby(['A', 'B']).size().nlargest(2)
A B
1 2 3
3 2
dtype: int64
或
gps.groupby(['A', 'B']).size().nlargest(2).reset_index(name='count')
关于python-3.x - 按降序对两列最频繁的组合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40621802/