我正在使用for循环将变量/日期与每个日期时间段进行比较。下面的代码在每个期间都会产生“ False”,这是不正确的。我列表中的前5个日期都是2006年,后5个都是2011年。data ['date']的dtype是datetime64,我在代码中将变量转换为datetime。
在此先感谢您的帮助或评论。
import numpy as np
import pandas as pd
from datetime import datetime
from dateutil.parser import parse
data = pd.read_csv("test_data_3.csv").fillna(0)
data['date'] = pd.to_datetime(data['date'])
data.set_index(data['date'], inplace=True)
lockout_pd_2_begin = '2009-06-01'
lockout_pd_2_begin = datetime.strptime(lockout_pd_2_begin,'%Y-%m-%d')
for row in data:
if (lockout_pd_2_begin >= data['date']).all():
data['lockout_test_result'] = 'True'
else:
data['lockout_test_result'] = 'False'
答案 0 :(得分:0)
如果我的问题正确,那么您只需要一个布尔掩码。在pandas
中,您可以使用诸如
# trying to reproduce the data:
data = pd.DataFrame({'date': pd.date_range("2006-01-01", "2011-12-31", freq='M')})
# get a boolean Series reflecting the condition:
data['lockout_test_result'] = data['date'] >= pd.Timestamp('2009-06-01')
# data
# date lockout_test_result
# 0 2006-01-31 False
# 1 2006-02-28 False
# 2 2006-03-31 False
# 3 2006-04-30 False
# 4 2006-05-31 False
# .. ... ...
# 67 2011-08-31 True
# 68 2011-09-30 True
# 69 2011-10-31 True
# 70 2011-11-30 True
# 71 2011-12-31 True
# [72 rows x 2 columns]