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


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

我有一个熊猫数据帧dates,就像上面一样——这不是以任何方式订购的。我将日期列设置为日期时间类型,并选择月份和年份,如下所示:

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'。这是否意味着我没有正确转换日期列?

IIUC,您可以在列和所述latest_date:之间的差异上使用idxmin

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

注意:如果索引是排序的,它会更安全,结果也更可靠

#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')

最新更新