Memperbarui baris dataframe berdasarkan baris dataframe lain
Saya memiliki dua kerangka data, dan satu kerangka data yang lebih besar perlu diperbarui berdasarkan data dari kerangka data yang lebih kecil. Jadi intinya kalau ada record dengan nama yang cocok saya mau update harganya di df1, seperti contoh di bawah ini. Mungkin ada beberapa baris dengan nama yang sama di df1
df1
id name price
1 name_1 5,34
2 name_2 5,36
3 name_3 4,74
4 name_4 5,23
5 name_5 5,94
6 name_1 5,34
df2
name price
name_4 5,17
name_1 5,37
df_result
id name price
1 name_1 5,37
2 name_2 5,36
3 name_3 4,74
4 name_4 5,17
5 name_5 5,94
6 name_1 5,37
Saya cukup terjebak. Mencoba melakukan ini dengan df.loc [] tetapi saya tidak berhasil. Ada ide?
Jawaban
Anda dapat menggunakan pembaruan ... seperti begitu ..
df1.update(df2)
Anda mencoba untuk melakukan beberapa pertandingan satu lawan satu, mergedapat membantu Anda di sini:
df1.merge(df2, on="name", how="left").ffill(axis=1).drop("price_x", axis=1)
dengan melakukan penggabungan kiri, Anda menyimpan semua nilai di df1 yang tidak memiliki kecocokan di df2. The ffillkemudian melakukan null-coallesing di mana Anda menyimpan kolom kanan paling non-null.
Pilihan lain berdasarkan jawaban Sandeep:
df3 = df1.set_index("name")
df3.update(df2.set_index("name")).reset_index()