合并pandas数据帧,使用列操作

2024-07-05 10:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我搜索了档案,但没有找到我想要的(可能是因为我真的不知道该用什么关键字)

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

例如,我有两个数据帧,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,不真正关心):

^{pr2}$

现在,将其扩展到合并三个或更多的数据帧。在

有没有直接的,内置的技巧来做到这一点?或者我需要一行一行地处理?在

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

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


Tags: columns数据dataframe技巧记录关键字档案内置
1条回答
网友
1楼 · 发布于 2024-07-05 10:41:46

只是部分的,还没有完全的解决方案。但主要问题解决了:

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中的其他数量应该相同。我还没有找到一种在df4中生成列“a”并用非NaN填充值的简单方法。现在正在搜索一个“count”函数来获取df3.a行中元素的出现情况(假设它有几十个列“a”)。在

相关问题 更多 >