Python Pandas如何获取最接近给定日期的日期

时间:2020-05-09 12:16:07

标签: python pandas

   date
0  09-2019
1  10-2019
2  11-2019
4  01-2020
5  02-2020
7  04-2020

我有一个像上面一样的熊猫数据框dates-这没有任何顺序。我将date列设置为datetime类型,并仅选择月份和年份,如下所示:

dates['date'] = pd.to_datetime(dates['date'], errors='ignore')
dates['date'] = dates['date'].dt.strftime("%m-%Y")

我想选择与给定日期最接近的行,我将其设置为:

latest_date = max(dates['date'])
latest_date = latest_date.strftime("%m-%Y")

这给了我05-2020。如何使用nearest方法从dates中选择日期,该日期与latest_date 最近等于?该示例的预期输出应为04-2020

我已经尝试过了:

dates.iloc[dates.index.get_loc(datetime.datetime(latest_date),method='nearest')]

但是我得到一个AttributeError: type object 'datetime.datetime' has no attribute 'datetime'。这是否表示我没有正确转换日期列?

2 个答案:

答案 0 :(得分:4)

IIUC,您可以在列与所说的idxmin之间的区别上使用latest_date

latest_date = '05-2020'
print (dates.loc[(pd.to_datetime(dates['date'])
                  -pd.to_datetime(latest_date)).abs().idxmin(), 
                 'date'])
'04-2020'

答案 1 :(得分:1)

注意:如果对索引进行排序,它会更安全,结果也更可靠

#set 'date' as index
df = pd.read_clipboard(parse_dates=['date']).set_index('date')

#get the nearest date : 
df.index.sort_values().asof('05-2020')
Timestamp('2020-04-01 00:00:00')
相关问题