假设我有一个如下所示的数据帧
userid recorddate alertdate
0 tom 2018-06-12 00:00:00.0 2018-06-13 00:00:00.0, 2015-04-13 00:00:00.0
1 nick 2019-06-01 00:00:00.0 2019-11-11 00:00:00.0, 2020-02-12 00:00:00.0, 2020-01-10 00:00:00.0
2 bob 2019-06-02 00:00:00.0 2019-06-01 00:00:00.0
我想做的是把“alertdate”列中的日期记下来,看看它们是否在recorddate之前的10天内
在本例中,由于2018-06-13的值,tom会选择
如果alertdate中只有一个日期,我知道如何执行此操作,但在此列中,可能有许多日期由一列分隔
有什么帮助或提示吗?我将创建一个新列,其中包含一个简单的布尔值,用于判断recorddate之后10天内是否存在alertdate。如果可能的话,不要创建新行来分隔日期,因为数据框将包含其他数据列,并且希望防止重复
谢谢
您可以将“alertdate”值转换为具有
str.split()
的日期列表:然后,您可以使用
pd.to_datetime()
在行和每行的列表元素上循环进行比较方法:
split()
将字符串转换为df['alertdate']
列中的列表李>df['alertdate_lt_10days']
的列,该列首先假定为“否”,随后将为相关行返回“是”李>A.第一个
for
语句-使用zip()
同时循环遍历两列的行和b。第二个for
语句-循环alertdate
列单元格中的列表,以便能够比较日期,看看它们是否在10天之内recorddate
和alertdate
字符串转换为日期,然后使用.days
将timedelta
对象转换为integer
(默认情况下,减去日期会创建一个timedelta对象,不能与整数进行比较)李>np.where()
为我们先前创建的新列指定了一个“是”李>代码:
输出:
相关问题 更多 >
编程相关推荐