从两个数据帧中获取合并的数据帧

时间:2018-10-22 08:24:55

标签: python pandas dataframe

我有两个数据框:

源数据框

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的计算函数。我需要的是在两个数据框之间逐行合并。

这可能是任意的,但有人可以解释合并的工作原理吗?

2 个答案:

答案 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'自变量连接不同的列名。