2014-02-17 263 views
7

的一部分,我有以下数据框:移调一个大熊猫据帧

>>> df 
Out[15]: 
     group type amount number 
0 group_A buy  100  123 
1 group_A view  0  111 
2 group_B view  0  222 
3 group_A view  0  222 

我想透视数据,这样我结束了:

   type group_A group_B 
0 amount buy  100   0 
1 number buy  0  123 
2 number view  333  222 

如何做到这一点?

回答

3

使用:

df=pd.DataFrame([['group_A','buy',100,123],['group_A','view',0,111],['group_B','view',0,222],['group_A','view',0,222]],columns=['group','type','amount','number']) 

首先总和指数和定向:

df = df[~((df['group_A']==0) | (df['group_B']==0))] 

Fillna的:

>>> df.fillna(0) 
group level_0 type group_A group_B 
0  amount buy  100  0 
2  number buy  123  0 
3  number view  333  222 
这都是零

>>> df = df.groupby(['type','group']).sum().transpose().stack(0).reset_index() 
>>> df 
group level_0 type group_A group_B 
0  amount buy  100  NaN 
1  amount view  0  0 
2  number buy  123  NaN 
3  number view  333  222 

删除行

这里有几处有点猜测,但它应该给你一个开始。

+0

谢谢。我试图使用多索引,但这是非常简单的。 – greenafrican