python - Pandas 合并和求和数据帧

标签 python pandas join merge

我有以下数据框:

数据框1:

ID1,ID2,VAL1,VAL2
CAR,RED,5,5
TRUCK,RED,6,6
CAR,BLUE,1,1

数据框2:

ID1,ID2,VAL1,VAL2
BIKE,RED,5,5
TRUCK,BLACK,6,6
CAR,RED,1,1

我想在键 = {ID1, ID2} 上左连接这两个数据帧。但我还想对值 {VAL1, VAL2} 求和。例如,输出将是:

ID1,ID2,VAL1,VAL2
CAR,RED,6,6
TRUCK,RED,6,6
CAR,BLUE,1,1

我尝试过 pandas.merge 的各种组合,但没有运气。 有人可以帮我吗?

最佳答案

要加入 pandas 中的数据帧,请使用 pd.merge 。在给定的情况下,连接应用于具有相似名称的列,因此将这些列名称的列表作为 on 参数传递就足够了:

merged = pd.merge(df_1, df_2, on=["ID1", "ID2"], how="left").fillna(0)

接下来,使用 df.assign 等计算必要的列:

merged = merged.assign(
    VAL1 = lambda x: x.VAL1_x + x.VAL1_y,
    VAL2 = lambda x: x.VAL2_x + x.VAL2_y)

结果:

columns = df_1.columns 
merged[columns]

>>> ID1     ID2     VAL1    VAL2
0   CAR     RED     6.0     6.0
1   TRUCK   RED     6.0     6.0
2   CAR     BLUE    1.0     1.0

关于python - Pandas 合并和求和数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917211/

相关文章:

python - 返回一个只在某些时候使用的对象

python - 如何制作分组条形图

python - Pandas 中的字符串到日期时间格式

python - Pandas 等效于 SQL 非 equi JOIN

php - Laravel 在连接后计算行数

python - 制作 Django Rest Framework (DRF) 工作流的方法

python - 如何使用 Pandas 将多行字符串合并为一行?

python - Conda 命令静默失败

python-3.x - Pandas:GroupBy Shift 和 Cumulative Sum

SQL - 从多个表中获取关联数据