我有一个多列数据框,其中包含几个相同的数值。看起来如下:
A B C D
0 1 1 10 1
1 1 1 20 2
2 1 5 30 3
3 2 2 40 4
4 2 3 50 5
这很好,但是,我需要将A设置为索引,将B设置为列。问题在于该列是聚合的,并且对于每个相同的B值取平均值。
df = DataFrame({'A':[1,1,1,2,2],
'B':[1,1,5,2,3],
'C':[10,20,30,40,50],
'D':[1,2,3,4,5]})
transposed_df = df.pivot_table(index=['A'], columns=['B'])
它没有在B1上保持10和20,而是将两者平均为15。
C D
B 1 2 3 5 1 2 3 5
A
1 15.0 NaN NaN 30.0 1.5 NaN NaN 3.0
2 NaN 40.0 50.0 NaN NaN 4.0 5.0 NaN
有什么办法可以使列B保持相同并使用Pandas显示C和D的每个值,还是我最好编写自己的函数来做到这一点?另外,索引和列保持相同非常重要,因为每个数字只能存在一个。
编辑:这是所需的输出。我知道这种精确的布局可能是不可能的,但是它表明10和20必须同时位于列1和索引1中。
C D
B 1 2 3 5 1 2 3 5
A
1 10.0,20.0 NaN NaN 30.0 1.0,2.0 NaN NaN 3.0
2 NaN 40.0 50.0 NaN NaN 4.0 5.0 NaN