[英]python / pandas - Find common columns between two dataframes, and create another one with same columns showing their difference
[英]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.