【问题标题】:pandas merge python sort data frame熊猫合并python排序数据框
【发布时间】:2021-05-31 06:13:43
【问题描述】:
Name    Sex Age Height  Weight
0   Alfred  M   14  69.0    112.5
1   Alice   F   13  56.5    84.0
2   Barbara F   13  65.3    98.0
3   Carol   F   14  62.8    102.5
4   Henry   M   14  63.5    102.5
5   James   M   12  57.3    83.0
6   Jane    F   12  59.8    84.5
7   Janet   F   15  62.5    112.5
8   Jeffrey M   13  62.5    84.0
9   John    M   12  59.0    99.5
10  Joyce   F   11  51.3    50.5
11  Judy    F   14  64.3    90.0
12  Louise  F   12  56.3    77.0
13  Mary    F   15  66.5    112.0
14  Philip  M   16  72.0    150.0
15  Robert  M   12  64.8    128.0
16  Ronald  M   15  67.0    133.0
17  Thomas  M   11  57.5    85.0
18  William M   15  66.5    112.0

我想交替输出性别列行

Name Sex Age Height Weight 
Alice F 13 56.5 84.0 
Alfred M 14 69.0 112.5 
Barbara F 13 65.3 98.0 
Henry M 14 63.5 102.5 
Carol F 14 62.8 102.5 
James M 12 57.3 83.0 
Jane F 12 59.8 84.5 
Jeffrey M 13 62.5 84.0 
Janet F 15 62.5 112.5 
John M 12 59.0 99.5 
Joyce F 11 51.3 50.5 
Philip M 16 72.0 150.0 
Judy F 14 64.3 90.0 
Robert M 12 64.8 128.0 
Louise F 12 56.3 77.0 
Ronald M 15 67.0 133.0 
Mary F 15 66.5 112.0 
Thomas M 11 57.5 85.0 

【问题讨论】:

    标签: python pandas dataframe sorting merge


    【解决方案1】:

    您可以使用groupby().cumcount() 枚举组内的行,然后使用sort_values

    (df.assign(order=df.groupby(['Sex']).cumcount())
       .sort_values(['order','Sex'])
       .drop('order',axis=1)
    )
    

    输出:

           Name Sex  Age  Height  Weight
    1     Alice   F   13    56.5    84.0
    0    Alfred   M   14    69.0   112.5
    2   Barbara   F   13    65.3    98.0
    4     Henry   M   14    63.5   102.5
    3     Carol   F   14    62.8   102.5
    5     James   M   12    57.3    83.0
    6      Jane   F   12    59.8    84.5
    8   Jeffrey   M   13    62.5    84.0
    7     Janet   F   15    62.5   112.5
    9      John   M   12    59.0    99.5
    10    Joyce   F   11    51.3    50.5
    14   Philip   M   16    72.0   150.0
    11     Judy   F   14    64.3    90.0
    15   Robert   M   12    64.8   128.0
    12   Louise   F   12    56.3    77.0
    16   Ronald   M   15    67.0   133.0
    13     Mary   F   15    66.5   112.0
    17   Thomas   M   11    57.5    85.0
    18  William   M   15    66.5   112.0
    

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 2016-08-07
      • 2013-09-26
      • 1970-01-01
      • 2018-07-05
      • 2020-08-16
      • 2021-05-30
      • 1970-01-01
      相关资源
      最近更新 更多