python - 加入 DataFrames 以更新原始值

标签 python pandas merge

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

关于python - 加入 DataFrames 以更新原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51385417/

相关文章:

python - github.GithubException.UnknownObjectException : 404 {"message": "Not Found",

python - 尽管重新绑定(bind) Python.File,Windows 仍使用 C :\Python27\Python. exe 打开 .py 文件

python - 正则表达式:选择所有相邻的两个(主题标签)单词组

python - 在 Pandas 数据框中用 NaN 替换空列表

python - 如何通过列的近似值组合/合并数据帧?

python - 可以使用 python 文档字符串来编写代码吗?

python - 从数据框中提取数据

python - 比较两个数据帧并根据 python 或 R 中的条件存储值

python - (Python) 通过重复数据删除合并新的和现有的 JSON

xml - WINMERGE显示汉字但只是XML