Python从数据框转动表

时间:2017-09-12 08:28:40

标签: python pandas pivot visualization

我在从pandas数据框聚合和转动表时遇到问题,这是我的结果表:

客户数据框:

    CustomerID  X_value         Y_value     Z_value
0   12346       1               1           1
1   12747       5               1           5
2   12748       5               5           5
3   12749       5               1           5
4   12820       5               1           4
5   12821       2               1           1

我想要的是转向:

enter image description here

我怎么能完成这个?

谢谢

1 个答案:

答案 0 :(得分:1)

使用pivot_table,使用fill_value=0NaNs填入0

In [2198]: df.pivot_table(index=['X_value', 'Y_value'], columns=['Z_value'], 
                          values='CustomerID', aggfunc='count', fill_value=0)
Out[2198]:
Z_value          1  4  5
X_value Y_value
1       1        1  0  0
2       1        1  0  0
5       1        0  1  2
        5        0  0  1

或者,使用groupbyunstack

In [2199]: df.groupby(['X_value', 'Y_value', 'Z_value']).size().unstack(fill_value=0)
Out[2199]:
Z_value          1  4  5
X_value Y_value
1       1        1  0  0
2       1        1  0  0
5       1        0  1  2
        5        0  0  1

Hacky失踪的方式X_value

In [2218]: (df.groupby(['X_value', 'Y_value', 'Z_value']).size().unstack(fill_value=0)
              .unstack(level=0, fill_value=0).stack()
              .reorder_levels(['X_value', 'Y_value'], axis=0))
Out[2218]:
Z_value          1  4  5
X_value Y_value
1       1        1  0  0
2       1        1  0  0
5       1        0  1  2
1       5        0  0  0
2       5        0  0  0
5       5        0  0  1