从字典中的键之间聚合数据帧中的列

时间:2017-04-13 02:45:02

标签: python pandas dictionary

我有以下带有2个键的字典,每个键的值都是pandas数据帧。

x1 = np.random.randn(50)
x2 = np.random.randn(50)

df1 = pd.DataFrame({'x':x1})
df2 = pd.DataFrame({'x':x2})

exampledict={'key1': df1, 'key2':df2}

我想在exampledict中创建一个新密钥,名为' total'其中结果是每个键的每个数据帧中列x的值的总和。这个例子有意简单,但在实践中1)在exampledict中可能有很多键(其值总是一个数据帧)和2)每个数据帧可能有其他列而不仅仅是' x'所以我想直接引用该专栏。我们可以假设每个数据帧的索引始终匹配。

编辑:我希望结果是一个数据框,也包含每个元素的总和,列为' x'和相同的索引

2 个答案:

答案 0 :(得分:0)

这应该这样做:

exampledict['total'] = np.sum([df['x'].values for df in exampledict.values()], axis=0)

答案 1 :(得分:0)

你必须解决这样一个事实:新的'总'键不能包含在总和中...否则它会将总数添加到自身!

for key, value in exampledict.iteritems():
    for k, v in value.iteritems():
        if key != 'total':
            exampledict['total'] += v

使用iteritems()以防词典变得庞大。