Python 时间比较不产生准确的结果
我有一个数据框,试图过滤日期列中的值介于Python 时间比较不产生准确的结果,python,datetime,pandas,filter,dataframe,Python,Datetime,Pandas,Filter,Dataframe,我有一个数据框,试图过滤日期列中的值介于StartDate和FinishDate之间的值。为了实现这一点,我从这些日期的字符串值中创建带有pandas.To_datetime的列,然后根据这些值进行过滤 result['date'] = pd.to_datetime(result.DateCreated) result['StartDate'] = pd.to_datetime(result.StartDate) result['FinishDate'] = pd.to_
StartDate
和FinishDate
之间的值。为了实现这一点,我从这些日期的字符串值中创建带有pandas.To_datetime
的列,然后根据这些值进行过滤
result['date'] = pd.to_datetime(result.DateCreated)
result['StartDate'] = pd.to_datetime(result.StartDate)
result['FinishDate'] = pd.to_datetime(result.FinishDate)
result = result[(result.date >= result.StartDate) &
(result.date <= result.FinishDate)]
其中有几个将(result.date>=result.StartDate
)的初始条件读取为False
,尽管它们显然是真的
例如,如果只是进行字符串比较,2009-06-08在时间和词汇上都在2009-05-01之后
编辑以添加一些版本控制信息:
在确保python pandas等版本相同的过程中,收集了要共享的版本信息,以防在此有所帮助:
熊猫版本0.16.2
python版本2.7.9
ipython 3.2.0要过滤数据帧,您可以在
df[df.date1.between(date2,date3)]
你是故意让“StartDate”和“FinishDate”列出现两次吗?是的,第二个2是pd.to_日期框之前的原始值,我在这里包括了这些值,以防它们提供了一些见解。你能解释一下你的答案吗?那是date2,date3还是df.date2,df.date3?所有的日期都是数据库中的行,不仅仅是Date1,它提供了相同的结果,但更精简的过滤器版本非常有用
df[df.date1.between(date2,date3)]