简体   繁体   English

分组级别 - python pandas pivot_table 中的多索引

[英]Grouping levels - multiindex in python pandas pivot_table

I've a multiindex dataframe in pandas that looks this (created using pivot_table ):我有一个多指标 数据帧的大熊猫,看起来这(使用创建pivot_table ):

在此处输入图片说明

I need help to add a level above (or below) the Date level showing the day of the date like this:我需要帮助添加一个高于(或低于)显示日期的日期级别的级别,如下所示:

在此处输入图片说明

I know I can get the day of a date like this:我知道我可以得到这样的约会日期:

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

Here is the code reporduce a similar pivot_table:下面是一个类似的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)

I got the solution!我得到了解决方案! Here it goes:它是这样的:

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')

And it produces an output like this:它产生这样的输出:

在此处输入图片说明

Pay attention to the function unstack and set the list of levels that are required to be unstacked at a time.注意函数unstack ,设置需要一次unstack的层级列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM