【问题标题】:Python pandas keep first columns' order unchanged while second col sort by ascending orderPython pandas 保持第一列的顺序不变,而第二列按升序排序
【发布时间】:2023-01-09 14:51:29
【问题描述】:

嗨,我想保持列 infoid 顺序不变,但按递增顺序(递增)对日期进行排序 那可能吗?

statisticsdate  infoid 
20230108      46726004
20230106      46726004
20230108      46725082
20230107      46725082
20230108      46725081
20230108      46724162
20230108      46720662 

应该是这样的:

statisticsdate  infoid 
20230106      46726004
20230108      46726004
20230107      46725082
20230108      46725082
20230108      46725081
20230108      46724162
20230108      46720662 

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    利用:

    df['statisticsdate'] = df.groupby('infoid', sort=False, group_keys=False)['statisticsdate'].apply(lambda x: x.sort_values()).to_numpy()
    print (df)
       statisticsdate    infoid
    0        20230106  46726004
    1        20230108  46726004
    2        20230107  46725082
    3        20230108  46725082
    4        20230108  46725081
    5        20230108  46724162
    6        20230108  46720662
    

    或者:

    df['statisticsdate'] = df.assign(infoid = pd.Categorical(df['infoid'], ordered=True, categories=df['infoid'].unique())).sort_values(['infoid','statisticsdate'])['statisticsdate']
    print (df)
       statisticsdate    infoid
    0        20230108  46726004
    1        20230106  46726004
    2        20230108  46725082
    3        20230107  46725082
    4        20230108  46725081
    5        20230108  46724162
    6        20230108  46720662
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      相关资源
      最近更新 更多