にあなたが選択するためのindex
でvalue
の位置のためのget_loc
、その後iloc
を必要とするようだ:
pos = df.index.get_loc(d)
print (df.iloc[[pos - 1]])
サンプル:
start = pd.to_datetime('2016-11-30')
rng = pd.date_range(start, periods=10, freq='M')
df = pd.DataFrame({'a': range(10)}, index=rng)
print (df)
a
2016-11-30 0
2016-12-31 1
2017-01-31 2
2017-02-28 3
2017-03-31 4
2017-04-30 5
2017-05-31 6
2017-06-30 7
2017-07-31 8
2017-08-31 9
d = '2017-01-31'
pos = df.index.get_loc(d)
print (df.iloc[[pos - 1]])
a
2016-12-31 1
date
がindex
にない場合method='nearest'
を追加します。
を
d = '2017-01-20'
pos = df.index.get_loc(d, method='nearest')
print (df.iloc[[pos - 1]])
a
2016-12-31 1
しかし、あなたが持っている必要がより一般的な解決策は以下のようにいくつかの条件を使用する場合:
d = '2017-11-30'
pos = df.index.get_loc(d, method='nearest')
if pos == 0:
print ('Value less or same as minimal date in DataTimeIndex')
else:
print ('Value nearest less or same as date', df.index[pos])
print ('Previous value', df.iloc[[pos - 1]])
は素晴らしい勤務はあなたに感謝します! – datascana