我有两个数据框:
源数据框
index A x y
1 1 100 100
2 1 100 400
3 1 100 700
4 1 300 200
5 2 50 200
6 2 100 200
7 2 800 400
8 2 1200 800
目标数据框
index A x y
1 1 105 100
2 1 110 410
3 1 110 780
4 2 1000 90
对于源数据帧中的每一行,我需要根据“ A”列分组的目标数据帧中的值找到最接近它的值。结果数据帧应如下所示(一个样本仅从源(索引1)中获取一行,而从该组中的目的地中获取对应的最近一行(A == 1))
A x_1 y_1 x_2 y_2 nearness(approx.)
1 100 100 105 100 95
1 100 100 110 410 50
1 100 100 110 780 20
注意:接近度列仅是表示形式,将来将作为基于x和y的计算函数。我需要的是在两个数据框之间逐行合并。
这可能是任意的,但有人可以解释合并的工作原理吗?
答案 0 :(得分:2)
pd.merge(source_df,dest_df,on ='A')
基本上,它将遍历左侧数据帧的每个项目,在右侧数据帧中查找其键,并在合并数据报中创建一个条目(每次在右侧数据帧中找到键时,它都会创建一个条目,但您可以使用validate关键字更改此行为)
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html了解更多信息!
答案 1 :(得分:1)
source_df.merge(dest_df, on='A')
它的作用是首先查看source_df的列和“ A”,并将其与dest_df的列“ A”(如果指定了“ on”)相匹配-很像SQL连接-,否则它将尝试使用索引来做到这一点,如果失败,则尝试使用通用列名实现连接。您还可以使用'left'和'right'自变量连接不同的列名。