[已解决]datetime.date is coerced to a datetime. In the future pandas will not coerce, and ‘the values

最近使用pandas筛选日期时,
比如我的数据包含列名为 trade_date,从 20010101 - 20221031 的数据,我要筛选出 20190901 - 20210901 的数据,那么,先如下转换数据类型:

s_date = datetime.datetime.strptime('20190901', '%Y%m%d').date()
e_date = datetime.datetime.strptime('20210901', '%Y%m%d').date()
df = df[(df['trade_date'] >= s_date) & (df['trade_date'] <= e_date)]

结果在使用上面代码的时候,报错如下:

datetime.date  is coerced to a datetime. In the future pandas will not coerce, and 'the values will not compare equal to the 'datetime.date'. To retain the current behavior, convert the 'datetime.date' to a datetime with 'pd.Timestamp'.

解决方案:
第一种(用此方法已解决)

data[(data.日期>pd.Timestamp(s_date))&(data.日期<pd.Timestamp(e_date))]

第二种

data[(data['日期'].lt(pd.Timestamp(e_date)))&(data['日期'].gt(pd.Timestamp(s_date)))]

第三种

id_a=data.日期.apply(lambda x: x.year ==2020  and x.month==5)
data[id_a]

第四种

id_b=data.日期.between(pd.Timestamp(s_date),pd.Timestamp(e_date))
data[id_b]

猜你喜欢

转载自blog.csdn.net/m0_57021623/article/details/127624618