Pandas按组聚合排序并计算两列的总和

时间:2014-01-18 13:55:24

标签: python eclipse python-2.7 csv pandas

我想对数据做一些分析。到目前为止,我可以对我想要的列进行分组,现在我需要在这里添加两列是我的逻辑:

import pandas as pd

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                           'foo', 'bar', 'foo', 'bar'],
                'B' : ['one', 'one', 'two', 'two',
                          'two', 'two', 'one', 'two'],
                'C' : [-1,2,3,4,5,6,0,2],
                'D' : [-1,2,3,4,5,6,0,2]})


grouped = df.groupby(['A','B']).sum()
print grouped

输出如下:

          C   D
A   B          
bar one   2   2
    two  12  12
foo one  -1  -1
    two   8   8

[4 rows x 2 columns]

我现在需要的是两个使用一些加法操作来添加列C和D并生成如下输出:

A   B       Sum   
bar one     4
    two    24
foo one    -2
    two    16

任何想法都会对我有所帮助,因为我是python的新手

1 个答案:

答案 0 :(得分:2)

您可以定义新列Sum

In [107]: grouped['Sum'] = grouped['C']+grouped['D']

现在grouped看起来像这样:

In [108]: grouped
Out[108]: 
          C   D  Sum
A   B               
bar one   2   2    4
    two  12  12   24
foo one  -1  -1   -2
    two   8   8   16

[4 rows x 3 columns]

仅选择Sum列(作为DataFrame使用双括号):

In [109]: grouped[['Sum']]
Out[109]: 
         Sum
A   B       
bar one    4
    two   24
foo one   -2
    two   16

[4 rows x 1 columns]