有一个按产品按地点按产品销售的 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 函数,以便能够像上面那样传递文件和转换它
用途:
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