Skip to main content
 首页 » 编程设计

python之加入 DataFrames 以更新原始值

2025年05月04日13zfyouxi

prev_staff DataFrame 包含电子邮件和真/假标志。我想用另一个 DataFrame 更新这个标志,其中包含一个电子邮件子列表和一个全部设置为 true 的标志。 我正在寻找一种更有效的方法来更新列值,而不必从生成的合并中删除和重命名列。 原始列是 lunchable,但合并生成 lunchable_x 和 y,我想避免必须对其进行管理。

new_staff = pd.merge(prev_staff,new_staff_emails, on='email',how='left') 
new_staff['lunchable_x'] = new_staff['lunchable_y'] 
new_staff = new_staff.drop(columns=['lunchable_y']) 
new_staff =  new_staff.rename(columns={'lunchable_x': 'lunchable'}) 
new_staff['lunchable'].fillna('false', inplace=True) 
new_staff.to_csv(path + 'staff.csv') 

new_staff columns

Index(['user_id', 'name', 'email', 'start_date', 'table', 'team', 'specialty', 
       'lunchable', 'previous_lunches'], 
      dtype='object') 

new_staff_emails columns

Index(['email', 'lunchable'], dtype='object') 

prev_staff columns

Index(['user_id', 'name', 'email', 'start_date', 'table', 'team', 'specialty', 
       'lunchable', 'previous_lunches'], 
      dtype='object') 

请您参考如下方法:

您可以直接在 new_staff 中设置 lunchable 的值,而不是加入:

new_staff.loc[new_staff["email"].isin(prev_staff["email"]), "lunchable"] = True 

此代码将为 new_staff 中所有也在 prev_staff 中的电子邮件设置 new_staff["lunchable"] = True。