1
$\begingroup$

Given a list where each element is a dataframe, i want to create sliding windows in order to train a lstm model, but the problem is an error occurs. Each dataframe is a time series with the 4 columns but different length.

import import_ipynb 
import split_data
import numpy as np




train, val, test = split_data.split_datasets()
window_size = 5


window_datasets = []
for i in range(len(train)):
    window_datasets.append(create_sliding_windows(train[i], window_size=5, n_future=1))

    
    
    




def create_sliding_windows(df, window_size=5, n_future=1):
    trainX = []
    trainY = []
    for i in range(window_size, len(df) - n_future + 1):
        trainX.append(df[i - window_size:i, 0:df.shape[1]])
        trainY.append(df[i + n_future - 1, i + n_future, 0])
    
    return np.array(trainX), np.array(trainY)
    

    
    
    

The error i achieve is :

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3802             try:
-> 3803                 return self._engine.get_loc(casted_key)
   3804             except KeyError as err:

~/anaconda3/lib/python3.8/site-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

~/anaconda3/lib/python3.8/site-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

TypeError: '(slice(0, 5, None), slice(0, 4, None))' is an invalid key

During handling of the above exception, another exception occurred:

InvalidIndexError                         Traceback (most recent call last)
<ipython-input-68-7cd0d5e7624d> in <module>
      6 window_datasets = []
      7 for i in range(len(train)):
----> 8     window_datasets.append(create_sliding_windows(train[i], window_size=5, n_future=1))
      9 
     10 

<ipython-input-66-9d44549be273> in create_sliding_windows(df, window_size, n_future)
      3     trainY = []
      4     for i in range(window_size, len(df) - n_future + 1):
----> 5         trainX.append(df[i - window_size:i, 0:df.shape[1]])
      6         trainY.append(df[i + n_future - 1, i + n_future, 0])
      7 

~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self, key)
   3803             if self.columns.nlevels > 1:
   3804                 return self._getitem_multilevel(key)
-> 3805             indexer = self.columns.get_loc(key)
   3806             if is_integer(indexer):
   3807                 indexer = [indexer]

~/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3808                 #  InvalidIndexError. Otherwise we fall through and re-raise
   3809                 #  the TypeError.
-> 3810                 self._check_indexing_error(key)
   3811                 raise
   3812 

~/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in _check_indexing_error(self, key)
   5966             # if key is not a scalar, directly raise an error (the code below
   5967             # would convert to numpy arrays and raise later any way) - GH29926
-> 5968             raise InvalidIndexError(key)
   5969 
   5970     @cache_readonly

InvalidIndexError: (slice(0, 5, None), slice(0, 4, None))
$\endgroup$

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.