我有以下数据框:
数据框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的各种组合并没有运气。 有人可以帮助我吗?
答案 0 :(得分:2)
要在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