【问题标题】: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