【发布时间】:2021-07-01 12:58:51
【问题描述】:
我试图弄清楚如何检查一列中的日期是否介于两个单独列的日期之间。我检查了Check if a date column is in a range of dates - pandas,但不是完全相同的问题。
我使用每行的唯一标识符来了解是否需要检查该行的日期。
如果日期在两个日期之间,我希望将该行的唯一标识符附加到列表中。
我在示例中使用“索引”作为唯一标识符。
import pandas as pd
date_dict = {'check_date': ['10/31/2019 10:00 PM',
'11/10/2012 06:02 PM',
'08/06/2008 02:02 PM',
'05/13/2009 12:19 PM',
'04/19/2008 07:38 PM',
'10/08/2012 01:12 PM',
'11/29/2012 09:41 AM',
'08/03/2016 02:05 AM',
'05/15/2015 12:31 AM',
'04/05/2016 10:21 AM',
'09/26/2018 02:02 PM',
'11/13/2014 02:09 AM',
'02/28/2014 09:58 AM',
'10/02/2015 08:25 PM',
'08/21/2008 06:31 AM',
'05/31/2017 03:48 AM',
'12/16/2010 10:39 PM',
'12/05/2008 08:57 AM',
'08/18/2010 10:35 PM',
'07/06/2010 12:25 AM',
'06/14/2013 07:27 AM',
'09/27/2015 11:06 PM',
'07/03/2014 01:02 AM',
'09/18/2009 04:26 PM',
'01/21/2016 10:56 PM'],
'start_date': ['02/24/2012 12:57 PM',
'09/25/2017 11:35 PM',
'07/05/2015 10:58 PM',
'04/26/2017 04:26 AM',
'09/03/2010 10:50 AM',
'07/08/2017 10:17 AM',
'06/14/2011 02:19 AM',
'03/21/2009 10:11 AM',
'10/22/2012 12:39 AM',
'11/09/2008 05:20 PM',
'12/31/2012 08:51 PM',
'08/26/2013 01:03 PM',
'05/21/2014 01:48 AM',
'11/11/2009 11:55 PM',
'04/23/2012 10:14 AM',
'11/23/2009 09:26 AM',
'08/20/2010 02:13 PM',
'08/09/2019 01:00 AM',
'01/06/2010 03:06 PM',
'02/23/2016 08:23 PM',
'10/30/2019 03:20 AM',
'06/12/2013 06:25 PM',
'02/03/2019 05:46 PM',
'08/07/2011 02:50 PM',
'06/18/2013 03:59 AM'],
'end_date': ['09/06/2014 03:03 AM',
'08/24/2012 12:30 PM',
'05/29/2008 05:48 AM',
'12/31/2014 01:00 AM',
'12/06/2011 05:47 PM',
'04/28/2013 07:01 PM',
'09/17/2017 02:21 AM',
'06/23/2008 03:45 PM',
'01/24/2011 03:04 PM',
'08/05/2015 02:10 AM',
'12/12/2018 11:50 AM',
'08/23/2016 06:31 AM',
'11/21/2018 08:49 AM',
'12/05/2009 03:31 PM',
'04/16/2010 09:24 PM',
'09/08/2012 12:29 PM',
'11/09/2009 08:08 AM',
'11/13/2016 04:21 AM',
'07/17/2018 12:05 PM',
'05/03/2012 06:27 AM',
'09/04/2012 09:11 PM',
'06/26/2014 06:55 AM',
'09/19/2016 08:48 PM',
'05/02/2018 09:03 AM',
'03/22/2015 04:20 AM']}
df = pd.DataFrame(date_dict)
df.reset_index(inplace = True)
df['flag'] = np.where(df['index'] % 2 == 0, 1, 0)
df_list = list(df[df['flag'] == 1]['index'])
analyst_list = []
for flag in df_list:
min_date = df[df['index'] == flag]['check_date']
for index, row in df.iterrows():
start = row['start_date']
end = row['end_date']
if min_date > start and min_date <= end :
analyst_list.append(row['index'])
else:
pass
当我运行上面的代码时,我得到了以下我无法解决的错误。
Traceback (most recent call last):
File "<ipython-input-112-fecfeaa05d6d>", line 8, in <module>
if min_date > start and min_date <= end :
File "C:\Users\JORDAN.HOWELL.GITDIR\AppData\Local\Continuum\anaconda3\envs\stan_env\lib\site-packages\pandas\core\generic.py", line 1330, in __nonzero__
f"The truth value of a {type(self).__name__} is ambiguous. "
我不确定日期不明确怎么办。我尝试将.values 添加到row['start_date'] 和row['end_date'] 和'row['check_date']`,但没有帮助。
有谁知道怎么做或者我的问题是什么?
【问题讨论】: