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

use*_*467 0 python pandas

   date
0  09-2019
1  10-2019
2  11-2019
4  01-2020
5  02-2020
7  04-2020
Run Code Online (Sandbox Code Playgroud)

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

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

我想选择与给定日期最接近的行,我设置如下:

latest_date = max(dates['date'])
latest_date = latest_date.strftime("%m-%Y")
Run Code Online (Sandbox Code Playgroud)

这给了我05-2020。如何使用的nearest方法选择的日期dates是最接近或等于给latest_date?该示例的预期输出应该是04-2020.

我试过这个:

dates.iloc[dates.index.get_loc(datetime.datetime(latest_date),method='nearest')]
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*n.T 5

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'
Run Code Online (Sandbox Code Playgroud)