df_a
とdf_b
は、次のような2つのデータフレームです
df_a
A B C D E
x1 Apple 0.3 0.9 0.6
x1 Orange 0.1 0.5 0.2
x2 Apple 0.2 0.2 0.1
x2 Orange 0.3 0.4 0.9
x2 Mango 0.1 0.2 0.3
x3 Orange 0.3 0.1 0.2
df_b
A B_new F
x1 Apple 0.3
x1 Mango 0.2
x1 Orange 0.1
x2 Apple 0.2
x2 Orange 0.3
x2 Mango 0.1
x3 Orange 0.3
x3 Mango 0.2
x3 Apple 0.1
final_df
に含まれるすべての行をdf_a
に含めて、df_a['A'] == df_b['A']
とdf_a['B'] == df_b['B_new']
の一意の組み合わせを検討できるようにします。
外部結合を実行してから、重複するw.r.t列AおよびBをfinal_df
にドロップしようとしましたが、B_newの値は保持されません。
以下は、result_df
を次のようにする方法です。
result_df
A B C D E B_new F
x1 Apple 0.3 0.9 0.6 Apple 0.3
x1 Orange 0.1 0.5 0.2 Orange 0.1
x2 Apple 0.2 0.2 0.1 Apple 0.2
x2 Orange 0.3 0.4 0.9 Orange 0.3
x2 Mango 0.1 0.2 0.3 Mango 0.1
x3 Orange 0.3 0.1 0.2 Orange 0.3
左外部結合も試しました:
final_df = pd.merge(df_a, df_b, how="left", on=['A'])
このデータフレームのサイズはdf_a
とdf_b
の和集合ですが、これは私が望むものではありません。
提案を感謝します。
これは、非常に理想的な左結合で実現できます。
下記参照:
final_df = pd.merge(df_a, df_b[['A', 'B_new','F']], how="left", left_on=['A', 'B'], right_on=['A', 'B_new']);