转换列类型';datetime64[ns]和#x27;在Python3中更新时间
我想在python3中对两个日期(一个来自pandas数据帧)进行比较,另一个是计算出来的。如果“Publication_date”中的值等于或小于今天的日期,并且大于10年前的日期,我想筛选pandas dataframe 熊猫df如下所示:转换列类型';datetime64[ns]和#x27;在Python3中更新时间,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我想在python3中对两个日期(一个来自pandas数据帧)进行比较,另一个是计算出来的。如果“Publication_date”中的值等于或小于今天的日期,并且大于10年前的日期,我想筛选pandas dataframe 熊猫df如下所示: PMID Publication_date 0 31611796 2019-09-27 1 33348808 2020-12-17 2 12089324 2002-06-27 3 31028872 2019-04-25
PMID Publication_date
0 31611796 2019-09-27
1 33348808 2020-12-17
2 12089324 2002-06-27
3 31028872 2019-04-25
4 26805781 2016-01-21
我正在进行如下所示的比较
df[(df['Publication_date']> datetime.date.today() - datetime.timedelta(days=3650)) &
(df['Publication_date']<= datetime.date.today())]
但它将列类型更改为“datetime64[ns]”,这使得“datetime64[ns]”和datetime之间的比较不兼容
我如何进行这种比较
非常感谢您的帮助。您只能使用pandas处理datetimes-用于从datetimes中删除时间(将时间设置为
00:00:00
):
TypeError:“>”在“str”和“Timestamp”@rshar实例之间不受支持-您似乎忘记了
df['Publication\u date']=pd.to\u datetime(df['Publication\u date'])
df_phenotype['publication_date']= pd.to_datetime(df_phenotype['publication_date'])
df['Publication_date']= pd.to_datetime(df['Publication_date'])
today = pd.to_datetime('now').floor('d')
df1 = df[(df['Publication_date']> today - pd.Timedelta(days=3650)) &
(df['Publication_date']<= today)]
today = pd.to_datetime('now').floor('d')
df1 = df[(df['Publication_date']> today - pd.offsets.DateOffset(years=10)) &
(df['Publication_date']<= today)]
print (df1)
PMID Publication_date
0 31611796 2019-09-27
1 33348808 2020-12-17
3 31028872 2019-04-25
4 26805781 2016-01-21