Memperbarui baris dataframe berdasarkan baris dataframe lain

Oct 02 2020

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

SandeepKothari Oct 02 2020 at 11:48

Anda dapat menggunakan pembaruan ... seperti begitu ..

df1.update(df2)
2 Dan Oct 02 2020 at 11:47

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()