Мой начальный фрейм данных выглядит следующим образом:
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
Затем я создаю MultiIndex для столбцов:
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
Я хочу, чтобы столбцы «Программа», «Параметр», «Станция» и «Метод» в столбцах MultiIndex группировали каждое Измерение и Флаг под ним, оставляя в качестве индекса начало и конец:
Program Core Long Term
Parameter PM2 Wind
Station 1234 1111
Method Direct Direct
Start End Measurement Flag Measurement Flag
2019-11-08 00:00:00 2019-11-08 00:59:59 3.30000 V
2019-11-09 00:00:00 2019-11-09 00:59:59 0.00123 V
Любая помощь будет принята. 1023 *