熊猫转置双列索引

时间:2021-07-08 09:06:59

标签: python pandas transpose

我有一个像下面这样的数据框

before

我想像下面这样转换它

after

它是一个双列索引转换,我不介意哪个价格/数量或日期是列索引的第一级。我认为日期是最高的,并按价格/数量拆分,但无法在此处创建这样的表格。它是一个包含大约一百万行和一年中所有日期的数据框,所以您对最有效的代码有什么想法吗?这?空单元格也可以是 0s

样本数据

<头>
客户 ID PROD_ID 价格 日期 数量
123 x 1 31-12-20 5
123 x 1 1-1-21 5
123 x 1 2-1-21 7
123 y 2 2-1-21 11
789 z 5 1-1-21 22
256 4 1-1-21 9
324 b 4 1-1-21 16
789 z 5.5 2-1-21 22
324 4.5 2-1-21 23
324 e 8 2-1-21 3

1 个答案:

答案 0 :(得分:1)

使用pandas.pivot_table

pd.pivot_table(
    df,
    values=['PRICE', 'QUANTITY'],
    index=['CID', 'PROD_ID'],
    columns=['DATE'],
    aggfunc=sum
)

输出

             PRICE                 QUANTITY                
DATE        1-1-21 2-1-21 31-12-20   1-1-21 2-1-21 31-12-20
CID PROD_ID                                                
123 x          1.0    1.0      1.0      5.0    7.0      5.0
    y          NaN    2.0      NaN      NaN   11.0      NaN
256 a          4.0    NaN      NaN      9.0    NaN      NaN
324 a          NaN    4.5      NaN      NaN   23.0      NaN
    b          4.0    NaN      NaN     16.0    NaN      NaN
    e          NaN    8.0      NaN      NaN    3.0      NaN
789 z          5.0    5.5      NaN     22.0   22.0      NaN