我在从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
我想要的是转向:
我怎么能完成这个?
谢谢
答案 0 :(得分:1)
使用pivot_table
,使用fill_value=0
将NaNs
填入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
或者,使用groupby
和unstack
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