2016-04-01 3 views
0

У меня есть multiindexdataframe в pandas, что выглядит это (создано с помощью pivot_table):уровней Группировки - мультииндекс в питоне панд

enter image description here

мне нужна помощь, чтобы добавить уровень выше (или ниже), даты уровень, показывающий день даты, как это:

enter image description here

Я знаю, что я могу получить в день даты, как это:

lt.DATE.dt.strftime('%a') 
#lt is a dataframe and DATE is a column it. 

Вот код reporduce подобной pivot_table:

import pandas as pd 
import numpy as np 

dlist = pd.date_range('2015-01-01',periods=5) 
df = pd.DataFrame(dlist, columns=['DATE']) 
df['EC'] = range(7033,7033+len(df)) 
df['HS'] = np.random.randint(0,9,5) 
df['AH'] = np.random.randint(0,9,5) 
pv = pd.pivot_table(df, columns=[df.DATE, 'EC'], values=['HS','AH']) 
pv = pv.unstack(level=1).unstack(level=0) 
+0

Пожалуйста, напишите реальный код, чтобы воспроизвести вашу проблему. –

+0

Добавлен образец кода для создания аналогичной таблицы pivot_table :) – Abbas

+0

@FabioLamanna Я ценю вас за то, что вы запросили код, что заставило меня создать образец кода и из которого я получил решение! – Abbas

ответ

0

Я получил решение! Вот он идет:

import pandas as pd 
import numpy as np 

dlist = pd.date_range('2015-01-01',periods=5) 
df = pd.DataFrame(dlist, columns=['DATE']) 
df['EC'] = range(7033,7033+len(df)) 
df['HS'] = np.random.randint(0,9,5) 
df['AH'] = np.random.randint(0,9,5) 
df['DAY'] = df.DATE.dt.strftime('%a') 
pv = pd.pivot_table(df, columns=[df.DATE.dt.date, df.DAY, 'EC'], values=['HS','AH']) 
pv = pv.unstack(level=[1,2]).unstack(level=0) 
pv.to_excel('solution.xlsx') 

И он производит такой вывод:

enter image description here

Обратите внимание на функцию unstack и установить список уровней, которые необходимы для быть разобрано в то время.

Смежные вопросы