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

我的初始数据帧如下所示:


import pandas as pd



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

      Program   Parameter   Station Method                Start                 End Measurement Flag

0        Core         PM2      1234 Direct  2019-11-08 00:00:00 2019-11-08 00:59:59     3.30000    V

1   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 Direct

2019-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        NaN

2019-11-09 00:00:00 2019-11-09 00:59:59     0.00123         V      NaN        NaN


阿晨1998
浏览 156回答 1
1回答

POPMUISE

您可以尝试一系列堆栈/取消堆栈:import pandasdf = 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python