gpt4 book ai didi

python - Pandas DataFrame 转置多列

转载 作者:行者123 更新时间:2023-12-05 00:15:44 24 4
gpt4 key购买 nike

我有一个如下的数据框。

a   x   10
b x 11
c x 15
a y 16
b y 17
c y 19
a z 20
b z 21
c z 23

我想将其转换如下:
    x   y   z
a 10 16 20
b 11 17 21
c 15 19 23


目前我正在将原始 DF 制作成多个数据帧(每个用于“a”、“b”和“c”),然后转置并合并回来。

我相信会有一个最佳解决方案。因此寻求帮助。

最佳答案

使用 pivot :

print (df)
A B C
0 a x 10
1 b x 11
2 c x 15
3 a y 16
4 b y 17
5 c y 19
6 a z 20
7 b z 21
8 c z 23
df = df.pivot(index='A', columns='B', values='C')
print (df)
B x y z
A
a 10 16 20
b 11 17 21
c 15 19 23

set_index + unstack :
df = df.set_index(['A','B'])['C'].unstack()
print (df)
B x y z
A
a 10 16 20
b 11 17 21
c 15 19 23

如果重复使用 pivot_table 使用聚合函数,如 mean , sum ...:
print (df)
A B C
0 a x 10 <-same a,x different C = 10
1 a x 13 <-same a,x different C = 13
2 b x 11
3 c x 15
4 a y 16
5 b y 17
6 c y 19
7 a z 20
8 b z 21
9 c z 23


df = df.pivot_table(index='A', columns='B', values='C', aggfunc='mean')

groupby + aggregate function + set_index :
df = df.groupby(['A','B'])['C'].mean().unstack()
print (df)
B x y z
A
a 11.5 16.0 20.0 <- (10 + 13) / 2 = 11.5
b 11.0 17.0 21.0
c 15.0 19.0 23.0

关于python - Pandas DataFrame 转置多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43617871/

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