Pandas excel 3级表头转换

问题描述 投票:0回答:1

有一个按产品按地点按产品销售的 excel 表,如下所示

新泽西州 新泽西州 加州 加州 加州 加州 纽约 纽约
柳溪 柳溪 大商场 大商场 威斯敏斯特购物中心 威斯敏斯特购物中心 富尔顿中心 富尔顿中心
交易日期 交易文件 伙伴 数量 价值 数量 价值 数量 价值 数量 价值 总数量 总价值
17/5/2022 8534 P1 1 150.00 1 150.00
17/5/2022 8654 P6 2 400.00 2 400.00
18/5/2022 3537 P2 1 175.00 1 175.00
20/5/2022 2301 P3 2 150.00 2 150.00
20/5/2022 2301 P5 1 50.00 1 50.00

需要改成如下

交易日期 交易文件 伙伴 数量 价值 状态 位置
17/5/2022 8534 P1 1 150.00 加州 大商场
17/5/2022 8654 P6 2 400.00 加州 威斯敏斯特购物中心
18/5/2022 3537 P2 1 175.00 新泽西州 柳溪
20/5/2022 2301 P3 2 150.00 纽约 富尔顿中心
20/5/2022 2301 P5 1 50.00 纽约 富尔顿中心

有这样的月度报告,所以我一直在寻找一个使用 pandas 或任何其他库的 python 函数,以便能够像上面那样传递文件和转换它

python pandas dataframe unpivot
1个回答
0
投票

用途:

df1 = (df.iloc[:, :-2]
         .rename_axis(columns=['State','Location', None])
         .stack(level=[0,1])
         .reset_index())
print (df1)
  Transaction Date  Transaction Document Partno        State  \
0       17/5/2022                   8534    P1   California    
1       17/5/2022                   8654    P6   California    
2       18/5/2022                   3537    P2   New Jersey    
3       20/5/2022                   2301    P3     New York    
4       20/5/2022                   2301    P5     New York    

             Location   Value   Qty   
0         Great Mall     150.0   1.0  
1   Westminster Mall     400.0   2.0  
2        Willowbrook     175.0   1.0  
3  The Fulton Center     150.0   2.0  
4  The Fulton Center      50.0   1.0  
© www.soinside.com 2019 - 2024. All rights reserved.