groupby pandas dataframe并创建另一个水平表示groupby结果的数据帧

时间:2016-03-23 09:21:47

标签: python pandas dataframe

我有一个名为usefuldata的pandas数据框,其中包含列['标记',' action',' id']

usabledata = pd.DataFrame(columns=['marker','action','id'])

我在可用的数据帧上运行了以下命令:

counts = usabledata.groupby(['marker','action']).count()
counts = counts.drop(['marker','action'])
print counts

                        id 
marker  action   
1       A               377 
        B               224
        C               9881 
        D               149946 
2       A               481 
        B               397
        C               7468 
        D               147581 
3       A               538 
        B               458
        D               145916

现在,我想用以下格式创建一个pandas数据帧:

Marker      A      B     C     D
1           377    224   9881   149946
2           481    397   7468   147581
3           538    458   0      145916

是否可以在ipython notebook中使用pandas数据框执行此操作?

此外,是否可以删除列,例如列' C'在获得这个期望的输出后?

在同一问题中的另一个疑问是,在获得所需的输出之后,我如何添加另一列'分数'这只是列的比例' A'和' D'?

1 个答案:

答案 0 :(得分:4)

IIUC然后您可以使用unstack致电fillna

In [124]:
gp.unstack().fillna(0)

Out[124]:
       action                   
marker      A    B     C       D
id                              
1         377  224  9881  149946
2         481  397  7468  147581
3         538  458     0  145916