私はDATAFRAMEがdf
が列GENDER
、AGE
とID
およびその他の列を持っているという名前の持っている、とだけ3列あまりにGENDER
、AGE
とID
を持ってdf_2
という名前の別のデータフレームがあります。 GENDER
とAGE
の値をdf
に更新する場合は、値をdf_2
に設定します。Fater更新パンダDATAFRAME
だから私のアイデアは
df_id = df.ID.tolist()
df_2_id = df_2.ID.tolist()
df = df.set_index('ID')
df_2 = df_2.set_index('ID')
# all the ids in df_2_id are in df_id
for id in tqdm.tqdm_notebook(df_2_id):
df.loc[id, 'GENDER'] = df_2.loc[id, 'GENDER']
df.loc[id, 'AGE'] = df_2.loc[id, 'AGE']
あるしかし、forループのみ秒あたり17.2回の反復を持っており、それは周りのデータを更新するために2時間かかります。どうすれば速くすることができますか?最後の値を保持し、
idx = df.index.intersection(df_2.index)
df.loc[idx, 'GENDER'] = df_2['GENDER']
df.loc[idx, 'AGE'] = df_2['AGE']
それともconcat
それらを一緒にし、重複を削除:
パンダを使用しないと、より速くなります – Flika205
df ['GENDER'] = df_2 ['GENDER'] 'それから' df ['AGE'] = df_2 ['AGE'] 'なぜあなたはforループを 'ID'で使っていますか? –
@ juanpa.arrivillaga、 'df'と' df_2'は異なる形をしているからです。 –