【问题标题】:Grouping levels - multiindex in python pandas pivot_table分组级别 - python pandas pivot_table中的多索引
【发布时间】:2016-07-21 18:59:15
【问题描述】:

我在pandas 中有一个multiindex dataframe,看起来像这样(使用pivot_table 创建):

我需要帮助来添加高于(或低于)显示日期的日期级别,如下所示:

我知道我可以得到这样的日期:

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

这里是一个类似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)

【问题讨论】:

  • 请发布真实代码以重现您的问题。
  • 添加了示例代码以生成类似的 pivot_table :)
  • @FabioLamanna 感谢您询问代码,这让我创建了一个示例代码并从中得到了解决方案!

标签: python pandas pivot-table multi-index


【解决方案1】:

我找到了解决方案!就是这样:

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

它会产生这样的输出:

注意unstack函数,设置需要一次出栈的层级列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2018-07-07
    • 2023-04-08
    • 2018-07-09
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多