使用列操作合并pandas数据帧

时间:2014-10-10 20:57:47

标签: python pandas merge dataframe

我搜索了档案,但没找到我想要的东西(可能是因为我真的不知道要使用哪些关键词)

这是我的问题:我有一堆数据帧需要合并;我还想用数据帧的总和来更新列子集的值。

例如,我有两个数据帧,df1和df2:

df1=pd.DataFrame([ [1,2],[1,3], [0,4]], columns=["a", "b"])
df2=pd.DataFrame([ [1,6],[1,4]], columns=["a", "b"])

    a   b           a   b
0   1   2       0   1   5
1   1   3       2   0   6
2   0   4       
合并后,我希望将列'b'更新为匹配记录的总和,而列'a'应该像df1(或df2,真的不在乎)一样:

    a   b
0   1   7
1   1   3
2   0   10

现在,将其展开以合并三个或更多数据框。

这样做有直接的内置技巧吗?或者我需要逐行处理?

=====编辑/澄清=====

在现实世界的示例中,每个数据帧可能包含不在其他数据帧中的索引。在这种情况下,合并的数据框应该具有所有这些并使用sum(或其他一些操作)更新共享条目/索引。

1 个答案:

答案 0 :(得分:0)

仅部分,尚未完整的解决方案。但重点是解决了:

df3 = pd.concat([df1, df2], join = "outer", axis=1)
df4 = df3.b.sum(axis=1)

df3会有两个' a'列和两个' b'列。 df3.b上的sum()函数添加了两个' b'列并忽略NaN。现在df4有专栏' b'总和为df1和df2' b'列和所有索引。

没有解决专栏' a'虽然。在我的实际情况中,df3.a中的NaN数量很少,而df3.a中的其他数量应该相同。我还没有找到一种简单的方法来制作一个专栏' a'在df4中,用非NaN填充值。现在正在搜索"计数"函数来获取df3.a行中元素的出现(想象它有几十列' a')。