转换列类型';datetime64[ns]和#x27;在Python3中更新时间

转换列类型';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

我想在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
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