Memperbarui informasi di kolom dataframe

Aug 30 2020

Saya memiliki kumpulan data yang difilter new_df, seperti ini

    Label  New_Label    Username    Look_up
59  1.0    True         vald21      val
67  1.0    True         2512        2512
75  1.0    True         Christine   Chris

yang dibuat untuk menetapkan label baru ( New_Label) ketika beberapa kondisi terpenuhi. Saya juga memiliki dataset lain ( df) yang mencakup semua data (dataset ini adalah tempat pengambilan data di atas) tetapi belum memiliki informasi tentang New_Label(karena dataset di atas dibuat karena alasan ini, dengan memfilter berdasarkan kondisi tertentu).

        Label   Username    Look_up
    59  1.0     vald21      val
    67  1.0     2512        2512
    67  0.0     faehr6542   faehr
...
    75  1.0     Christine   Chris
   122  0.0     starogm     starogm

Saya ingin mengubah Labeldari dataset asli saya dfke baris-baris tersebut new_df, jika kasusnya Label dan New_Label tidak cocok.

        Label   Username    Look_up
    59  0       vald21      val
    67  0       2512        2512
    67  0       faehr6542   faehr
...
    75  0       Christine   Chris
   122  0     starogm     starogm

di mana Truedi new_dfbersesuaian dengan 0dan Falseuntuk 1di Labelkolom. Saya tidak ingin mengubah nilai lain, hanya yang ada di new_dfdataset (kunci saya adalah Nama Pengguna).

Bisakah Anda menjelaskan kepada saya, tolong, bagaimana mengubah informasi dalam dataset asli?

Terima kasih

Jawaban

1 student Aug 30 2020 at 18:59

Anda dapat mencoba menggabungkan dua kerangka data dan kemudian menggunakan .assignbersama dengan np.where. Saat menggabungkan dengan outer, nilai yang tidak ada akan memiliki NAbegitu np.wheredengan notnull()dapat digunakan:

pd.merge(df, new_df, how='outer').assign(Label = lambda row:np.where(row['New_Label'].notnull(), 0, 1))

Jika Anda tidak mau New_Label, Anda bisa menjatuhkan kolom dengan .drop('New_Label', axis=1). Sesuatu seperti di bawah ini (jika ditulis dalam satu baris):

pd.merge(df, new_df, how='outer').assign( Label = lambda row:  np.where(row['New_Label'].notnull(), 0, 1)).drop('New_Label', axis=1)
SHINJI.K Aug 30 2020 at 19:00

Jika saya memahami pertanyaan Anda dengan benar, Anda ingin membalik 'New_Label', mengubahnya menjadi int dan menetapkannya ke 'Label':

new_df['Label'] = (new_df['New_Label']==False).astype(int)