gpt4 book ai didi

python - pandas 以两列级别旋转 DataFrame

转载 作者:行者123 更新时间:2023-12-01 08:41:22 24 4
gpt4 key购买 nike

我有一个 pandas DataFrame,具有两个维度 regionproducts,以及两个度量 costprice:

df = pd.DataFrame(
{'region':['N', 'S', 'W', 'E', 'N', 'S', 'W', 'E'],
'product':['P1', 'P1', 'P1', 'P1', 'P2', 'P2', 'P2', 'P2'],
'cost':[10, 13, 17, 28, 29, 23, 17, 18],
'price':[7, 8, 4, 11, 9, 13, 7, 8]})

我想获得:

region      E                N            S           W    
price cost price cost price cost price cost
product
P1 11 28 ...
P2 8 18 ...

我尝试过:

df1 = df.groupby(['product', 'region'])
.agg({'price': 'first', 'cost': 'first'})
.unstack('region')
.swaplevel(axis=1)
print(df1)

但我得到:

region      E     N     S     W    E    N    S    W
price price price price cost cost cost cost
product
P1 11 7 8 4 28 10 13 17
P2 8 9 13 7 18 29 23 17

我错过了什么?

最佳答案

添加reindex按列中 MultiIndex 的第一级:

df1 = (df.groupby(['product', 'region'])
.agg({'price': 'first', 'cost': 'first'})
.unstack('region')
.swaplevel(axis=1)
.reindex(columns=['E','N','S','W'], level=0))
print(df1)
region E N S W
price cost price cost price cost price cost
product
P1 11 28 7 10 8 13 4 17
P2 8 18 9 29 13 23 7 17

关于python - pandas 以两列级别旋转 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53476733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com