我有以下数据框:
数据框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/