在多索引中排序日期(&Q) [英] Sort "Date" in Multi-Index

查看:0
本文介绍了在多索引中排序日期(&Q)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

鉴于此多索引数据帧,

Units                               Import                                               Export
Date     01012019  01022019  02012019  02022019   03012019  03022019   01012019  01022019  02012019  02022019   03012019  03022019
Period
   0        4          3         1         1         2          4          2         2         1         1          2         2  
   1        2          2         3         2         4          2          1         2         3         8          4         9
   2        2          6         7         7         5          1          3         6         2         2          2         0
   3        4          2         2         2         3          4          1         8         2         9          4         2

我正在尝试弄清楚如何按月份(日期以DDMMYYYY格式)对‘日期’索引进行升序排序。最终结果将同时具有一天的"导入"和"导出"列(例如,01012019将具有4列和2列,并且数据帧将按月份以升序排序)。

我知道为了对日期索引进行排序,我需要使用TO_DATETIME来转换类型。此排序方法仅在我完全删除"Units"索引时才起作用,但我不能这样做。

有没有办法?我曾尝试使用‘GET_LEVEL_VALUES’并为我的索引指定列名,但没有成功。

谢谢。

推荐答案

选择级别依据MultiIndex.get_level_values,转换为datetime,然后重新分配:

dates = pd.to_datetime(df.columns.get_level_values(1), format='%d%m%Y')
df.columns = [df.columns.get_level_values(0), dates]
print (df)
       Units                           Import                        
  2019-01-01 2019-02-01 2019-01-02 2019-02-02 2019-01-03 2019-02-03   
4          3          1          1          2          4          2   
2          2          3          2          4          2          1   
2          6          7          7          5          1          3   
4          2          2          2          3          4          1   

                 Export                                   
  2019-01-01 2019-02-01 2019-01-02 2019-02-02 2019-01-03  
4          2          1          1          2          2  
2          2          3          8          4          9  
2          6          2          2          2          0  
4          8          2          9          4          2

然后根据需要按DataFrame.sort_index排序-例如按第二级:

df = df.sort_index(axis=1, level=1)
print (df)
      Import      Units     Export      Units     Export     Import  
  2019-01-01 2019-01-01 2019-01-02 2019-01-02 2019-01-03 2019-01-03   
4          2          3          1          1          2          4   
2          2          2          8          2          9          2   
2          6          6          2          7          0          1   
4          8          2          9          2          2          4   

      Export      Units     Export     Import             
  2019-02-01 2019-02-01 2019-02-02 2019-02-02 2019-02-03  
4          1          1          2          2          2  
2          3          3          4          4          1  
2          2          7          2          5          3  
4          2          2          4          3          1  

这篇关于在多索引中排序日期(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆