【发布时间】:2021-08-10 14:38:57
【问题描述】:
提前感谢您抽出宝贵时间帮助我
我有 2 个数据框: 1 - 带有我要发送给用户的通知的数据框
notifications_to_send = pd.DataFrame({'user_id': ['201', '207', '223', '212', '112', '311'],
'id_notification': ['1', '1', '1', '1', '1', '1'],
'email':['user1@gmail.com','user2@gmail.com','user3@gmail.com','user4@gmail.com','user5@gmail.com','user6@gmail.com']
})
user_id id_notification email
0 201 1 user1@gmail.com
1 207 1 user2@gmail.com
2 223 1 user3@gmail.com
3 212 1 user4@gmail.com
4 112 1 user5@gmail.com
5 311 1 user6@gmail.com
2 - 包含用户信息的数据框,这些用户设置选项不限制向他们发送通知的数量
unlimited_notifications = pd.DataFrame({'user_id': ['201', '212'],
'id_notification': ['1', '2']})
user_id id_notification
0 201 1
1 212 2
所以我想将“send_push”列添加到第一个数据帧,这将确定如果用户设置了无限选项,将发送推送 我考虑过在 user_id 和 id_notification 上合并 2 个数据框
notifications_to_send.merge(unlimited_notifications, on=['user_id','id_notification'], how='left')
,对于符合此条件的行,'send_push' 将设置为 True,如果条件不执行则将其设置为 Null,因此如下所示:
user_id id_notification email send_push
0 201 1 user1@gmail.com True
1 207 1 user2@gmail.com null
2 223 1 user3@gmail.com null
3 212 1 user4@gmail.com null
4 112 1 user5@gmail.com null
5 311 1 user6@gmail.com null
所以问题是如何在合并时添加新列,或者是否有其他方法可以实现?比较两个数据框?
【问题讨论】:
-
不确定我是否关注 -
unlimited_notifications数据框是否仅包含您希望send_push列成为True的用户?该数据框上的id_notification列是否有任何意义? -
@jfaccioni 我有不同的通知,所以用户可以选择他总是会收到其中一个,如果他没有设置无限选项,例如,id = 1 的通知他只会收到一次一周,但如果他设置此选项,我将每周发送此通知 5 次
-
嗨!以下任何一个答案是否有效?如果是这样并且如果您愿意,您可以考虑接受其中一个以向其他人发出问题已解决的信号。如果没有,您可以提供反馈,以便改进(或完全删除)
标签: python pandas dataframe merge