在不进行聚合的情况下转换Pandas DataFrame

时间:2018-10-29 22:42:28

标签: python pandas dataframe aggregate

我有一个多列数据框,其中包含几个相同的数值。看起来如下:

       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

0 个答案:

没有答案