我有两个这样的数据帧:
df1 = pd.DataFrame({'A': [1,0,3], 'B':[0,0,1], 'C':[0,2,2]}, index =['a','b','c'])
df2 = pd.DataFrame({'A': [0,0], 'B':[2,1]}, index =['a','c'])
df1和df2:
| A | B | C | | A | B |
---|---|---|---| ---|---|---|
a | 1 | 0 | 0 | a | 0 | 2 |
b | 0 | 0 | 2 | c | 0 | 1 |
c | 3 | 1 | 2 |
预期的结果是:
| A | B | C |
---|---|---|---|
a | 1 | 2 | 0 |
b | 0 | 0 | 2 |
c | 3 | 2 | 2 |
我遇到了这个问题,因为任何数据帧中都可能缺少列/行(df1可能没有df2所有的列和行)
解决方法:
在这个问题的答案中继续这个想法 – merge 2 dataframes in Pandas: join on some columns, sum up others
因为在您的情况下,索引是常见的索引,您可以使用pandas.concat()
作为两个DataFrame,然后使用DataFrame.groupby
基于索引,然后对其进行求和.示例 –
In [27]: df1
Out[27]:
A B C
a 1 0 0
b 0 0 2
c 3 1 2
In [28]: df2
Out[28]:
A B
a 0 2
c 0 1
In [29]: pd.concat([df1,df2]).groupby(level=0).sum()
Out[29]:
A B C
a 1 2 0
b 0 0 2
c 3 2 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。