2017-02-28 7 views
0

日付/時刻フィールドにミリ秒を追加するまで、すべてのデータを処理していました。 [ '2017年2月20日16時10分05秒': '2017年2月20日16時20分06秒'] =選択選択ValueError:インデックスは単調増加または減少する必要があります。ミリ秒を追加する

は私DATA_FRAMEをフィルタリングするために私の文です**

データは、ミリ秒が適切に移入されたときにミリ秒は0000

enter image description here

以下のデータエラーがあるときに働くの下

enter image description here

更新: 私が試してみました

selected.sort_index() 
selected.ix['2017-02-20 16:10:05':'2017-02-20 16:20:06'] 
selected.ix[datetime.date(year=2017,month=2,day=20):datetime.date(year=2017,month=2,day=21)] 

はTypeError:

その後

'>' 'STR' と 'datetime.date' のインスタンス間でサポートされていない私は、次の取得

ValueError        Traceback (most recent call last) 
/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind) 
    3121    try: 
-> 3122     return self._searchsorted_monotonic(label, side) 
    3123    except ValueError: 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in _searchsorted_monotonic(self, label, side) 
    3087 
-> 3088   raise ValueError('index must be monotonic increasing or decreasing') 
    3089 

ValueError: index must be monotonic increasing or decreasing 

During handling of the above exception, another exception occurred: 

KeyError         Traceback (most recent call last) 
<ipython-input-43-a7bf11322082> in <module>() 
    11 selected = selected.query('y_acc < 0.4 and z_acc > -0.4') 
    12 selected = selected.query('z_acc < 0.4 and z_acc > -0.4') 
---> 13 selected = selected['2017-02-20 16:10:05':'2017-02-20 16:20:06'] 
    14 
    15 #%pylab inline 

/usr/local/lib/python3.6/site-packages/pandas/core/frame.py in __getitem__(self, key) 
    2045 
    2046   # see if we can slice the rows 
-> 2047   indexer = convert_to_index_sliceable(self, key) 
    2048   if indexer is not None: 
    2049    return self._getitem_slice(indexer) 

/usr/local/lib/python3.6/site-packages/pandas/core/indexing.py in convert_to_index_sliceable(obj, key) 
    1772  idx = obj.index 
    1773  if isinstance(key, slice): 
-> 1774   return idx._convert_slice_indexer(key, kind='getitem') 
    1775 
    1776  elif isinstance(key, compat.string_types): 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in _convert_slice_indexer(self, key, kind) 
    1236   else: 
    1237    try: 
-> 1238     indexer = self.slice_indexer(start, stop, step, kind=kind) 
    1239    except Exception: 
    1240     if is_index_slice: 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in slice_indexer(self, start, end, step, kind) 
    2995   """ 
    2996   start_slice, end_slice = self.slice_locs(start, end, step=step, 
-> 2997             kind=kind) 
    2998 
    2999   # return a slice 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in slice_locs(self, start, end, step, kind) 
    3174   start_slice = None 
    3175   if start is not None: 
-> 3176    start_slice = self.get_slice_bound(start, 'left', kind) 
    3177   if start_slice is None: 
    3178    start_slice = 0 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind) 
    3123    except ValueError: 
    3124     # raise the original KeyError 
-> 3125     raise err 
    3126 
    3127   if isinstance(slc, np.ndarray): 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind) 
    3117   # we need to look up the label 
    3118   try: 
-> 3119    slc = self.get_loc(label) 
    3120   except KeyError as err: 
    3121    try: 

/usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_loc(self, key, method, tolerance) 
    2134     return self._engine.get_loc(key) 
    2135    except KeyError: 
-> 2136     return self._engine.get_loc(self._maybe_cast_indexer(key)) 
    2137 
    2138   indexer = self.get_indexer([key], method=method, tolerance=tolerance) 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4433)() 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4279)() 

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13742)() 

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13696)() 

KeyError: '2017-02-20 16:10:05' 
+1

を使用することができますか? – jezrael

+0

ありがとうございます、インデックスにデータをフィルタリングしたい – Burf2000

+1

これを試しましたか?selected.ix ['2017-02-20 16:10:05': '2017-02-20 16:20:06'] ' http://stackoverflow.com/questions/22898824/filtering-pandas-dataframes-on-dates –

答えて

1

日時インデックスでフィルタリングする

selected_subset = selected.ix['2017-02-20 16:10:05':'2017-02-20 16:20:06'] 

参照:filtering pandas dataframes on dates

私はこれを試してみましたが、それが私の仕事:

import pandas as pd 
import numpy as np 
from datetime import datetime 

date_time_1 = datetime.now() 

date_time_2 = datetime.now() 

data = [{'time': date_time_1, 'val': 1}, {'time': date_time_2, 'val':2}] 

df = pd.DataFrame.from_dict(data, orient='columns') 

df.set_index(['time'], inplace=True) 

df = df.sort_index() # This is an important step if 'time' field is not sorted 
df 


          val 
time  
2017-02-28 19:19:00.777225 1 
2017-02-28 19:19:04.605302 2 

df.ix['2017-02-28 19:19:00':'2017-02-28 19:19:03'] 


          val 
time  
2017-02-28 19:19:00.777225 1 
1

問題は、それが日付のインデックスが文字列だと思ったことが判明しました。

私は、parse_dates = Trueの追加 '>' 'STR' と 'datetime.date' のインスタンス間でサポートされていません:TypeError例外:エラーを返し

selected.ix[datetime.date(year=2017,month=2,day=20):datetime.date(year=2017,month=2,day=21)] 

:私が使用してこれを見つけました ro my read_csvコマンドを実行し、問題を修正しました。

私はその後、ちょうどどのような指標 `DF = df.sort_index()`をソートについて

selected = selected['2017-02-20 16:10:05':'2017-02-20 16:11:06'] 
関連する問題