簡體   English   中英

Python Pandas:為兩個數據幀之間的多列找到最接近的匹配

[英]Python Pandas: Find closest match for multiple columns between two dataframes

我有兩個數據框,它們都包含 3 個值 df1(X,Y,Z), df2(A,B,C) 我希望創建一個新的數據框 df3,其中包含提取 df2 中所有組件的最接近匹配對於 df1 中的每一行; 即對於 df1 中的每一行,返回 df2 中與 A 到 X、B 到 Y、C 到 Z 最接近匹配的行。

類似於如何在 Pandas 系列中找到與輸入數字最接近的值? ,但是這個問題僅尋求基於單個值返回最近的行,而我尋求返回返回所有三列的最接近匹配的行,並為 df1 中的每一行迭代該過程,而不是單一值。

輸入
df1

 Index A    B    C
 1     2    4    6 
 2     0.8  7    9
  

df2

Index X     Y     Z
1     11    3     4.5
2     2.2   4.4   5.8
3     1     6.8   9.3
4     1.3   10    9.5

輸出

df3

 Index X     Y     Z
 2     0.32  0.11  0.4
 3     1     6.8   9.3

找出他們差異的最小乘積:

df3 = pd.DataFrame()
for k, v in df1.iterrows(): 
    i = ((df2['X']-v['A']) * \
       (df2['Y']-v['B']) * \
       (df2['Z']-v['C'])).abs().idxmin() 
    df3 = df3.append(df2.loc[i])

print(df3)


     X    Y    Z
2  2.2  4.4  5.8
3  1.0  6.8  9.3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM