我有以下目标:我需要比较同一个表中的两个日期列,并根据比较结果创建第三列。我不知道如何比较np.where语句中的日期。
这是我目前的代码:
now = datetime.datetime.now() #set the date to compare
delta = datetime.timedelta(days=7) #set delta
time_delta = now+delta #now+7 days
这是np.where声明:
DB['s_date'] = np.where((DB['Start Date']<=time_delta | DB['Start Date'] = (None,"")),DB['Start Date'],RW['date'])
OR条件需要考虑“开始日期”列可能为空的可能性
答案 0 :(得分:0)
lambda会为你工作Filippo吗?它按行逐行查看,然后将您选择的函数应用于行的每个值。无论函数返回什么,都会用它返回的值填充系列。
def compare(date):
if date <= time_delta or date == None:
#return something
else:
#return something else
DB['s_date'] = DB.apply(lambda x: compare(x))
编辑:这也会有效(感谢EyuelDK)
DB['s_date'] = DB.apply(compare)
答案 1 :(得分:0)
感谢您的见解。我更新了(并根据我的目的调整了)代码,如下所示:
now = datetime.datetime.now() #set the date to compare
delta = datetime.timedelta(days=7) #set delta
time_delta = now+delta #now+7 days
DB['Start'] = np.where(((DB['Start Date']<=time_delta) | (DB['Start Date'].isnull()) | (DB['Start Date'] == "")),DB['Start'],DB['Start Date'])
他们的关键是在由|分隔的每个条件中添加()。否则通过比较两种不同的数据类型给出错误。