![](/img/trans.png)
[英]Comparing two dictionaries in Python by identifying sets with same key but different values
[英]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,
您可以使用groupby
并apply
将自定义 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.