Python 如果所需的日期时间索引不存在,则获取下一个可用的日期时间索引
所以我有一个数据帧,f,每周索引:Python 如果所需的日期时间索引不存在,则获取下一个可用的日期时间索引,python,pandas,dataframe,indexing,Python,Pandas,Dataframe,Indexing,所以我有一个数据帧,f,每周索引: Open High Low Close Volume Date 2017-07-24 5.05 5.120 5.010 5.19 16306737.0 2017-07-31 5.31 5.475 5.280 5.24 45182199.0 2017-08-07 5.69 5.740 5.640 5.67 10167161.0 2017-08-14 5.65 5.6
Open High Low Close Volume
Date
2017-07-24 5.05 5.120 5.010 5.19 16306737.0
2017-07-31 5.31 5.475 5.280 5.24 45182199.0
2017-08-07 5.69 5.740 5.640 5.67 10167161.0
2017-08-14 5.65 5.680 5.440 5.76 28296416.0
2017-08-21 5.49 5.605 5.480 5.55 16126060.0
2017-08-28 6.00 6.030 5.940 5.95 19398271.0
2017-09-04 5.86 5.965 5.845 6.01 20218389.0
2017-09-11 5.98 6.030 5.830 5.98 15812289.0
2017-09-18 5.71 5.770 5.540 5.81 30786508.0
2017-09-25 5.16 5.190 5.090 5.17 13641128.0
我想将datetime对象解析为它,如果该datetime对象存在于索引中,那么我将使用该行中的数据,否则,如果它不存在于索引中,那么抓取解析的日期之后的下一行
例如:如果我解析f.loc[datetime.datetime2017,09,07]
那它就不在索引中了,所以我想让它抓住那一行
2017-09-11 5.98 6.030 5.830 5.98 15812289.0
因为那是9月7日之后的下一个索引日期 一个简单的解决方案是使用np.searchsorted: 细节
如果是在最后一个之后呢;很好的回答btw@piRSquared我没有想到……我不知道该如何处理这个问题,这是一个很好的观点,但幸运的是,我永远不会在最后一个问题之后。我知道会有一个简单的解决方案,谢谢@cᴏʟᴅsᴘᴇᴇᴅ
df.iloc[[np.searchsorted(df.index, '2017-09-07')]]
Open High Low Close Volume
Date
2017-09-11 5.98 6.03 5.83 5.98 15812289.0
df
Open High Low Close Volume
Date
2017-07-24 5.05 5.120 5.010 5.19 16306737.0
2017-07-31 5.31 5.475 5.280 5.24 45182199.0
2017-08-07 5.69 5.740 5.640 5.67 10167161.0
2017-08-14 5.65 5.680 5.440 5.76 28296416.0
2017-08-21 5.49 5.605 5.480 5.55 16126060.0
2017-08-28 6.00 6.030 5.940 5.95 19398271.0
2017-09-04 5.86 5.965 5.845 6.01 20218389.0
2017-09-11 5.98 6.030 5.830 5.98 15812289.0
2017-09-18 5.71 5.770 5.540 5.81 30786508.0
2017-09-25 5.16 5.190 5.090 5.17 13641128.0
df.index.dtype
dtype('<M8[ns]')