2017-05-09 32 views
1

我想从两个dataframes一起添加数据这样的:我怎么能加在一起的两个数据dataframes

>>> df1 = pd.DataFrame({'col1': [1, 2, 3], 'col2': [2, 3, 2], 
'col3': ['aaa', 'bbb', 'ccc']}) 
>>> df1 
    col1 col2 col3 
0  1  2 aaa 
1  2  3 bbb 
2  3  2 ccc 

    >>> df2 = pd.DataFrame({'col1': [4, 4, 5], 'col2': [4, 4, 5], 
'col3': ['some', 'more', 'third']}) 

>>> df2 
    col1 col2 col3 
0  4  4 some 
1  4  4 more 
2  5  5 third 

我想结果是:

>>> result 
    col1 col2 col3 
0  4  4 some 
1  4  4 more 
2  9  7 third 
3  1  2 aaa 
4  2  3 bbb 

也就是说:如果存在具有相同值的col3,则该条目的col1 + col2应加在一起。 如果它不存在,那么这些行应该被复制。 行的顺序并不重要,我不需要保留df1和df2,我只关心后面的结果。

什么是实现这一目标的最佳途径?

我刚刚从不同的csv文件加载的数据看起来完全一样,所以也许有另一种方法可以做到这一点? 结果我只是想再次保存为一个csv文件,看起来像上面。

回答

2

我们使用pd.concatgroupby来求和值。

pd.concat([df1,df2]).groupby('col3').sum().reset_index().reindex_axis(['col1','col2','col3'],axis=1) 

输出:

col1 col2 col3 
0  1  2 aaa 
1  2  3 bbb 
2  4  4 more 
3  4  4 some 
4  9  7 third