我有一个如下所示的 Dataframe df1
-
|email_id | date |role
|abc@gmail.com | '2022-09-08' |1
|abc@gmail.com | '2022-07-01' |1
|abc@gmail.com | nan |1
|xyz@gmail.com | '2022-04-01' |1
|gmh@gmail.com | nan |1
|ytr@gmail.com | '2022-09-08' |1
|ytr@gmail.com | '2022-09-02' |1
以及df2
-
|email_id | status |role
|abc@gmail.com | 1 |1
|xyz@gmail.com | 0 |2
|gmh@gmail.com | 1 |1
|ytr@gmail.com | 1 |2
更新 Dataframe df2
列status
,并检查是否所有记录都存在日期值,则状态应更新为0
,否则为1
。
预期输出-
|email_id | status |role
|abc@gmail.com | 1 |1
|xyz@gmail.com | 0 |2
|gmh@gmail.com | 1 |1
|ytr@gmail.com | 0 |2
预期输出说明-abc@gmail.com有2条记录,第三条记录的填写日期为nan,因此其状态应为1,如果某个电子邮件ID有一条记录,并且填写了日期,则状态应为0,否则,如果单个电子邮件ID的填写日期为nan,则状态应为1,如果同一个电子邮件ID有多条记录,并且填写的日期均应为0,如 www. example.com ,因为不存在NAN。
我试了下面几行代码-
df1 = df1.sort_values(by=["email_id","date"])
df1 = (df1[["email_id","date"]]).reset_index()
但是我不能理解如何在df 1的基础上更新df 2。
任何帮助都将不胜感激。谢谢!
1条答案
按热度按时间vqlkdk9b1#
可以使用列表解析,如下所示