@@ -213,22 +213,53 @@ def test_positive_rolling(self):
213
213
214
214
df_full = pd .concat ([first_class , second_class ], ignore_index = True )
215
215
216
- df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
217
- column_kind = None , rolling_direction = 1 )
218
-
219
216
correct_indices = (["id=1, shift=3" ] * 1 +
220
217
["id=1, shift=2" ] * 2 +
221
218
["id=1, shift=1" ] * 3 +
222
219
["id=2, shift=1" ] * 1 +
223
220
["id=1, shift=0" ] * 4 +
224
221
["id=2, shift=0" ] * 2 )
222
+ correct_values_a = [1 , 1 , 2 , 1 , 2 , 3 , 10 , 1 , 2 , 3 , 4 , 10 , 11 ]
223
+ correct_values_b = [5 , 5 , 6 , 5 , 6 , 7 , 12 , 5 , 6 , 7 , 8 , 12 , 13 ]
224
+
225
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
226
+ column_kind = None , rolling_direction = 1 )
227
+
228
+ self .assertListEqual (list (df ["id" ]), correct_indices )
229
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a )
230
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b )
231
+
232
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
233
+ column_kind = None , rolling_direction = 1 ,
234
+ maximum_number_of_timeshifts = None )
225
235
226
236
self .assertListEqual (list (df ["id" ]), correct_indices )
237
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a )
238
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b )
227
239
228
- self .assertListEqual (list (df ["a" ].values ),
229
- [1 , 1 , 2 , 1 , 2 , 3 , 10 , 1 , 2 , 3 , 4 , 10 , 11 ])
230
- self .assertListEqual (list (df ["b" ].values ),
231
- [5 , 5 , 6 , 5 , 6 , 7 , 12 , 5 , 6 , 7 , 8 , 12 , 13 ])
240
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
241
+ column_kind = None , rolling_direction = 1 ,
242
+ maximum_number_of_timeshifts = 1 )
243
+
244
+ self .assertListEqual (list (df ["id" ]), correct_indices [3 :])
245
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a [3 :])
246
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b [3 :])
247
+
248
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
249
+ column_kind = None , rolling_direction = 1 ,
250
+ maximum_number_of_timeshifts = 2 )
251
+
252
+ self .assertListEqual (list (df ["id" ]), correct_indices [1 :])
253
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a [1 :])
254
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b [1 :])
255
+
256
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
257
+ column_kind = None , rolling_direction = 1 ,
258
+ maximum_number_of_timeshifts = 4 )
259
+
260
+ self .assertListEqual (list (df ["id" ]), correct_indices [:])
261
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a [:])
262
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b [:])
232
263
233
264
def test_negative_rolling (self ):
234
265
first_class = pd .DataFrame ({"a" : [1 , 2 , 3 , 4 ], "b" : [5 , 6 , 7 , 8 ], "time" : range (4 )})
@@ -239,22 +270,53 @@ def test_negative_rolling(self):
239
270
240
271
df_full = pd .concat ([first_class , second_class ], ignore_index = True )
241
272
242
- df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
243
- column_kind = None , rolling_direction = - 1 )
244
-
245
273
correct_indices = (["id=1, shift=-3" ] * 1 +
246
274
["id=1, shift=-2" ] * 2 +
247
275
["id=1, shift=-1" ] * 3 +
248
276
["id=2, shift=-1" ] * 1 +
249
277
["id=1, shift=0" ] * 4 +
250
278
["id=2, shift=0" ] * 2 )
279
+ correct_values_a = [4 , 3 , 4 , 2 , 3 , 4 , 11 , 1 , 2 , 3 , 4 , 10 , 11 ]
280
+ correct_values_b = [8 , 7 , 8 , 6 , 7 , 8 , 13 , 5 , 6 , 7 , 8 , 12 , 13 ]
281
+
282
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
283
+ column_kind = None , rolling_direction = - 1 )
251
284
252
285
self .assertListEqual (list (df ["id" ].values ), correct_indices )
286
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a )
287
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b )
253
288
254
- self .assertListEqual (list (df ["a" ].values ),
255
- [4 , 3 , 4 , 2 , 3 , 4 , 11 , 1 , 2 , 3 , 4 , 10 , 11 ])
256
- self .assertListEqual (list (df ["b" ].values ),
257
- [8 , 7 , 8 , 6 , 7 , 8 , 13 , 5 , 6 , 7 , 8 , 12 , 13 ])
289
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
290
+ column_kind = None , rolling_direction = - 1 ,
291
+ maximum_number_of_timeshifts = None )
292
+
293
+ self .assertListEqual (list (df ["id" ].values ), correct_indices )
294
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a )
295
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b )
296
+
297
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
298
+ column_kind = None , rolling_direction = - 1 ,
299
+ maximum_number_of_timeshifts = 1 )
300
+
301
+ self .assertListEqual (list (df ["id" ].values ), correct_indices [3 :])
302
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a [3 :])
303
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b [3 :])
304
+
305
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
306
+ column_kind = None , rolling_direction = - 1 ,
307
+ maximum_number_of_timeshifts = 2 )
308
+
309
+ self .assertListEqual (list (df ["id" ].values ), correct_indices [1 :])
310
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a [1 :])
311
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b [1 :])
312
+
313
+ df = dataframe_functions .roll_time_series (df_full , column_id = "id" , column_sort = "time" ,
314
+ column_kind = None , rolling_direction = - 1 ,
315
+ maximum_number_of_timeshifts = 4 )
316
+
317
+ self .assertListEqual (list (df ["id" ].values ), correct_indices [:])
318
+ self .assertListEqual (list (df ["a" ].values ), correct_values_a [:])
319
+ self .assertListEqual (list (df ["b" ].values ), correct_values_b [:])
258
320
259
321
def test_stacked_rolling (self ):
260
322
first_class = pd .DataFrame ({"a" : [1 , 2 , 3 , 4 ], "b" : [5 , 6 , 7 , 8 ], "time" : range (4 )})
@@ -309,8 +371,6 @@ def test_dict_rolling(self):
309
371
self .assertListEqual (list (df ["b" ]["_value" ].values ),
310
372
[8 , 7 , 8 , 6 , 7 , 8 , 13 , 5 , 6 , 7 , 8 , 12 , 13 ])
311
373
312
-
313
-
314
374
def test_warning_on_non_uniform_time_steps (self ):
315
375
with warnings .catch_warnings (record = True ) as w :
316
376
first_class = pd .DataFrame ({"a" : [1 , 2 , 3 , 4 ], "b" : [5 , 6 , 7 , 8 ], "time" : [1 , 2 , 4 , 5 ]})
0 commit comments