python - Pandas:组织一个大型编号的 DF
问题描述
我有一个df
看起来像这样的东西:
ID x1_2020-04-07 x2_2020-04-07 x1_2020-04-08 x2_2020-04-08
0 102717 21.0 11 15 21
1 136703 12.0 15 88 27
2 105140 2.0 39 53 24
本质上,x1
是x2
我在一个日期范围内跟踪的变量:2020-04-07 to 2020-04-08
但我想以某种方式组织这个 df 以便可以更轻松地查询它,我可能希望引入一个 MultiIndex 可能需要x1
和x2
更高级别,然后日期如下:
MultiIndex x1 x2 x1 x2
ID 2020-04-07 2020-04-07 2020-04-08 2020-04-08
0 102717 21.0 11 15 21
1 136703 12.0 15 88 27
2 105140 2.0 39 53 24
目标是能够查看一段时间内x1
和/或x2
一段时间内的偏差,因此我试图提高其df
结构的效率。
我将如何去创造一个df
这样的?
编辑
或像这样:
MultiIndex 2020-04-07 2020-04-07 2020-04-08 2020-04-08
ID x1 x2 x1 x2
0 102717 21.0 11 15 21
1 136703 12.0 15 88 27
2 105140 2.0 39 53 24
解决方案
用于DataFrame.swaplevel
将拆分列名称的级别更改顺序为MultiIndex
:
df = df.set_index('ID')
df.columns = df.columns.str.split('_', n=1, expand=True)
df = df.swaplevel(0,1, axis=1)
print (df)
2020-04-07 2020-04-08
x1 x2 x1 x2
ID
102717 21.0 11 15 21
136703 12.0 15 88 27
105140 2.0 39 53 24
推荐阅读
- c++ - std::make_shared 和 std::make_unique 如何在幕后工作?
- javascript - 如何使用 react-native 应用程序使用更少的内存
- c - 为什么允许将常规指针分配给指向 const 的指针,但不能相反?
- nodemcu - ESP8266 每次复位闪烁两次
- windows-subsystem-for-linux - Windows docker 卷的 WSL2 挂载 VHDX 虚拟磁盘问题
- android - Firestore 数据库 - Android 中的文档创建日期时间
- python - 如何在 Z3py 中建模
- node.js - 更新嵌套数组 mongodb
- typescript - Deno Validasaur 模块没有导出的成员
- php - 使用 php 控制 ac 程序,因为我的目的是从 web 应用程序运行 c 程序