2017-02-16 7 views
0

私はDatetimeIndexを持つデータフレームを持っています。私は入力を作成したい、ユーザーは、日付を書くだろうし、Pythonは最初に渡された月を検索します。Datetimeindexを操作するパンダ

ここでは例です:

2016-12-31 8.257478e+04 
:DFは、私はPythonがDF [日付1]を行い、その後、私が得るように結果が出力されますたいデータフレーム

date = input('Enter a date in YYYY-MM-DD format: ')   
    Enter a date in YYYY-MM-DD format: 2017-01-31 

の名前です。

入力日がすでにインデックスにある場合は可能ですが、入力がそうでない場合は方法を探しています。

アイデア?事前のおかげ

答えて

1

にあなたが選択するためのindexvalueの位置のための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 

dateindexにない場合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]]) 
+0

は素晴らしい勤務はあなたに感謝します! – datascana

関連する問題