【问题标题】:Pandas Merge and Sum Data FramesPandas 合并和求和数据框
【发布时间】:2018-06-18 20:45:20
【问题描述】:

我有以下数据框:

数据框 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

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

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

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

【问题讨论】:

    标签: python pandas join merge


    【解决方案1】:

    要在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
    

    【讨论】:

    • 我会使用 left 加入,因为这正是 OP 真正需要的。除此之外,这个答案似乎是正确的。
    • 太棒了,这太完美了。
    猜你喜欢
    • 1970-01-01
    • 2018-02-28
    • 2021-11-14
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2017-07-10
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多