gpt4 book ai didi

python - 仅当行和列值相同时才添加两个 pandas dataframe 值

转载 作者:太空狗 更新时间:2023-10-30 02:37:18 25 4
gpt4 key购买 nike

我有两个不同大小的数据框,其中一个比另一个大,但第二个数据框有更多的列。

如果数据框与另一个数据框具有相同的列和行值(在本例中为 id),我在尝试添加数据框时遇到问题

这是一些虚拟数据以及我是如何尝试解决它的

import pandas as pd

df1 = pd.DataFrame([(1,2,3),(3,4,5),(5,6,7),(7,8,9),(100,10,12),(100,10,12),(100,10,12)], columns=['id','value','c'])
df2 = pd.DataFrame([(1,200,3,4,6),(3,400,3,4,6),(5,600,3,4,6),(5,620,3,4,6)], columns=['id','value','x','y','z'])

因此,如果 df1df2 的 id 相同,则将列值添加到“whatToAdd”中的值

数据

df1: 
id value c
1 2 3
3 4 5
5 6 7
7 8 9
100 10 12
100 10 12
100 10 12
df2:
id value x y z
1 200 3 4 6
3 400 3 4 6
5 600 3 4 6
5 620 3 4 6

预期:

  Out: 
id value x y z
1 202 3 4 6
3 404 3 4 6
5 606 3 4 6
5 626 3 4 6

尝试过:

for each in df1.a:
if(df2.loc[df2['a'] == each]):
df2['a']+=df['a']

吐出错误“DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”这让我感到困惑,因为我试过了:

df2.loc[df2['a']==1

在循环之外它有效

最佳答案

将两个数据框设置为具有相同索引后:

df1 = df1.set_index("id")
df2 = df2.set_index("id")

你可以做一个非常简单的操作:

mask = df1.index.isin(df2.index)
df2["value"] += df1.loc[mask, "value"]

输出:

    value   x   y   z
id
1 202 3 4 6
3 404 3 4 6
5 606 3 4 6
5 626 3 4 6

您始终可以执行 df2.reset_index() 以返回到原始设置。

关于python - 仅当行和列值相同时才添加两个 pandas dataframe 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50575247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com