【问题标题】:sort the most frequent combinations of two columns in descending order按降序对两列最频繁的组合进行排序
【发布时间】:2017-03-30 00:59:58
【问题描述】:

我的数据框看起来像这样

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

【问题讨论】:

    标签: python-3.x sorting pandas numpy


    【解决方案1】:

    您需要将sort_values() 的结果分配回gps1 或使用`inplace=True:

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

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

    正如sort_values 的文档中所述,inplace 默认设置为False

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-07-05
        • 2021-11-19
        • 1970-01-01
        • 2014-02-16
        • 2011-10-14
        • 2013-09-20
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        相关资源
        最近更新 更多