为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas MultiIndex:如何在MuldoIndex列下对齐列

Pandas MultiIndex:如何在MuldoIndex列下对齐列

阿晨1998 2022-08-16 18:40:49
我的初始数据帧如下所示:import pandas as pddf = pd.DataFrame(data=[['Core','PM2',1234,'Direct','2019-11-08 00:00:00','2019-11-08 00:59:59',3.300,'V'],['Long Term','Wind',1111,'Direct','2019-11-09 00:00:00','2019-11-09 00:59:59',0.00123,'V']],                   columns=['Program','Parameter','Station','Method','Start','End','Measurement','Flag'])df      Program   Parameter   Station Method                Start                 End Measurement Flag0        Core         PM2      1234 Direct  2019-11-08 00:00:00 2019-11-08 00:59:59     3.30000    V1   Long Term        Wind      1111 Direct  2019-11-09 00:00:00 2019-11-09 00:59:59     0.00123    V然后,我索引数据帧:df_index = df.set_index(['Start','End','Measurement','Flag'])df_index这给了我:                                                              Program   Parameter   Station Method              Start                 End Measurement Flag                2019-11-08 00:00:00 2019-11-08 00:59:59     3.30000    V         Core         PM2      1234 Direct2019-11-09 00:00:00 2019-11-09 00:59:59     0.00123    V    Long Term        Wind      1111 Direct然后,我为列创建一个多索引:df_columns = pd.MultiIndex.from_frame(df_index[['Program','Parameter','Station','Method']])然后,我使用 MultiIndex 创建一个新的数据帧:data = pd.DataFrame(df_index, index=df_index.index, columns=df_columns)data这给了我:                                                      Program     Core  Long Term                                                    Parameter      PM2       Wind                                                      Station     1234       1111                                                       Method   Direct     Direct              Start                 End Measurement      Flag       2019-11-08 00:00:00 2019-11-08 00:59:59     3.30000         V      NaN        NaN2019-11-09 00:00:00 2019-11-09 00:59:59     0.00123         V      NaN        NaN
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您可以尝试一系列堆栈/取消堆栈:


import pandas

df = pd.DataFrame(data=[['Core','PM2',1234,'Direct','2019-11-08 00:00:00','2019-11-08 00:59:59',3.300,'V'],['Long Term','Wind',1111,'Direct','2019-11-09 00:00:00','2019-11-09 00:59:59',0.00123,'V']], columns=['Program','Parameter','Station','Method','Start','End','Measurement','Flag'])

df_index = df.set_index(['Start','End', 'Program','Parameter','Station','Method'])

df_index.unstack([-4, -3, -2, -1]).stack(-5).unstack(-1)

//img1.sycdn.imooc.com//62fb74520001699a06200272.jpg

查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号