繁体   English   中英

比较具有相同主键值的记录的两个不同列值

[英]Comparing two different column values for the records having same primary key value

我想比较同一 ID 的两列(date1 和 date2),如果 date1 与前一个 date2 匹配,则将列 NewColumn 的值设置为“是”。

输入:

ID 日期 1 日期2 新专栏
1个 2022 年 1 月 31 日 2022 年 2 月 1 日
1个 2022 年 2 月 1 日 2022 年 2 月 2 日
1个 2022 年 2 月 7 日 2022 年 2 月 8 日
2个 2022 年 2 月 2 日 2022 年 2 月 2 日
3个 2022 年 2 月 2 日 2022 年 2 月 3 日

输入CSV格式:

ID,date1,date2,NewColumn
1,31/01/2022,01/02/2022, 
1,01/02/2022,02/02/2022, 
1,07/02/2022,08/02/2022,
2,02/02/2022,02/02/2022,
3,02/02/2022,03/02/2022,

Output:

ID 日期 1 日期2 新专栏
1个 2022 年 1 月 31 日 2022 年 2 月 1 日
1个 2022 年 2 月 1 日 2022 年 2 月 2 日 是的
1个 2022 年 2 月 7 日 2022 年 2 月 8 日
2个 2022 年 2 月 2 日 2022 年 2 月 2 日
3个 2022 年 2 月 2 日 2022 年 2 月 3 日

CSV格式:

ID,date1,date2,NewColumn
1,31/01/2022,01/02/2022, 
1,01/02/2022,02/02/2022, YES
1,07/02/2022,08/02/2022,
2,02/02/2022,02/02/2022,
3,02/02/2022,03/02/2022,

您可以使用groupbyapply将自定义 function 应用于每个组。 然后 function 需要将date1与上一行的date2进行比较,这可以使用shift来完成。 这将给出一个 boolean 值(True 或 False),要获得一个字符串值,您可以使用np.where 例如:

import numpy as np

def func(x):
    return x['date1'] == x['date2'].shift(1)

df['NewColumn'] = np.where(df.groupby('ID').apply(func), 'YES', '')

结果:

   ID  date1           date2         NewColumn
0   1  31/01/2022      01/02/2022   
1   1  01/02/2022      02/02/2022       YES
2   1  07/02/2022      08/02/2022   
3   2  02/02/2022      02/02/2022   
4   3  02/02/2022      03/02/2022   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM