如何基于多列以矩阵形式汇总数据框?

时间:2017-08-07 19:16:01

标签: python pandas

例如,我有:

Column A    Column B    Column C
   A_1        B_1         0
   A_1        B_2         1
   A_2        B_3         3
   A_2        B_5         2

我想得到这个:

       B_1   B_2  B_3  B_5
A_1     0     1   nan  nan
A_2    nan   nan   3    2

我的想法是获得A列和B列的唯一值,根据它重新创建一个新的数据帧,并通过2 for循环填充空白。使用Pandas有更好的方法吗?对于大型数据帧,我的方法需要太长时间。

1 个答案:

答案 0 :(得分:2)

选项1

df.set_index(['Column A','Column B'])['Column c'].unstack()

输出:

Column B  B_1  B_2  B_3  B_5
Column A                    
A_1       0.0  1.0  NaN  NaN
A_2       NaN  NaN  3.0  2.0

选项2

pd.crosstab(df['Column A'],df['Column B'],df['Column C'],aggfunc='sum')

选项3

df.pivot_table('Column C','Column A','Column B','sum')

选项4

df.pivot('Column A','Column B','Column C')