Sort quot;Datequot; in Multi-Index(在多索引中排序日期(Q))
本文介绍了在多索引中排序日期(&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)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在多索引中排序日期(&Q)
猜你喜欢
- 基于多个一级列的子集多索引DataFrame 2022-09-22
- 如何将属性添加到作为组存储在HDF5文件中的 pa 2022-09-21
- 如何防止Groupby超越指数? 2022-09-22
- 合并具有多个索引和列值的数据帧 2022-09-22
- 如何命名HDF5数据集中的列? 2022-09-21
- 为什么切换屏幕在Kivy中不起作用? 2022-09-21
- 获取多索引中某个级别的最后一个元素 2022-09-22
- H5py:如何在HDF5组和数据集上使用key()循环 2022-09-21
- 将文件从Azure文件加载到Azure数据库 2022-09-21
- 使用带有CROSS_VAL_SCORE的自定义估计器失败 2022-09-21