按降序排列两列最常见的组合

时间:2016-11-15 23:53:59

标签: python-3.x sorting pandas numpy

我的数据框看起来像这样

+---+---+---
|  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)

2 个答案:

答案 0 :(得分:2)

您需要将<canvas id="canvasId" style="border: solid"></canvas>的结果分配回sort_values()或使用`inplace = True:

gps1

gps1.sort_values(['count'],ascending=False, inplace=True)

正如sort_values的文档中所述,gps1 = gps1.sort_values(['count'],ascending=False) 默认设置为inplace

答案 1 :(得分:1)

使用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')

enter image description here