【问题标题】:how to get the unique combination of columns and sort by them in python data frame?如何在python数据框中获取列的唯一组合并按它们排序?
【发布时间】:2016-09-27 20:46:57
【问题描述】:

如何在 python 数据框中获取列的唯一组合并按它们排序?我知道我可以使用 df.groupby(['col1','col2']).size() 来获得唯一的组合。但是,我也希望按 col2 的升序排列结果,然后按 col1 的升序排列。例如,如果我的数据框是这样的:

  col1  col2
0    A     1
1    B     3
2    C     2
3    D     1
4    A     1
5    F     2

我希望最终输出如下所示:

  col1  col2 
0    A     1 
1    D     1 
2    C     2
3    F     2
4    B     3 

【问题讨论】:

    标签: python sorting pandas dataframe group-by


    【解决方案1】:

    通过col2col1 使用groupby,但随后需要swaplevel(如果订单列col1col2 很重要)和reset_index - 解决方案在groupby 中使用默认排序:

    df1 = df.groupby(['col2','col1']).size().swaplevel(0,1).reset_index(name='count')
    print (df1)
      col1  col2  count
    0    A     1      2
    1    D     1      1
    2    C     2      1
    3    F     2      1
    4    B     3      1
    

    第二个解决方案首先需要sort_valuescol2col1列中,然后将参数sort=False添加到groupby,因为默认情况下sort=True

    df = df.sort_values(['col2','col1'])
    print (df)
      col1  col2
    0    A     1
    4    A     1
    3    D     1
    2    C     2
    5    F     2
    1    B     3
    
    print (df.groupby(['col1','col2'], sort=False).size())
    col1  col2
    A     1       2
    D     1       1
    C     2       1
    F     2       1
    B     3       1
    dtype: int64
    

    另一种解决方案是先groupby,然后sort_values

    df1 = df.groupby(['col1','col2']).size().reset_index(name='count')
    print (df1)
      col1  col2  count
    0    A     1      2
    1    B     3      1
    2    C     2      1
    3    D     1      1
    4    F     2      1
    
    df1 = df1.sort_values(['col2','col1'])
    print (df1)
      col1  col2  count
    0    A     1      2
    3    D     1      1
    2    C     2      1
    4    F     2      1
    1    B     3      1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2021-10-24
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      相关资源
      最近更新 更多