Python-dask / pandas Как удалить / исключить последнее наблюдение в каждой группе - PullRequest
0 голосов
/ 01 мая 2019

Я использую Python dask для обработки большого набора данных панели csv (10GB +).Кадр данных выглядит так:

 stock     date     time   spread  time_diff 
  VOD      01-01    9:05    0.01     0:07     
  VOD      01-01    9:12    0.03     0:52     
  VOD      01-01   10:04    0.02     0:11
  VOD      01-01   10:15    0.01     0:10     
  VOD      01-01   10:25    0.03     0:36      
  VOD      01-01   11:01    0.02     0:03
  VOD      01-01   10:04    0.02     0:09  
  VOD      01-01   10:15    0.01     0:10   
  VOD      01-01   10:25    0.03     0:39  
  VOD      01-01   11:04    0.02    22:00 
  VOD      01-02    9:04    0.02     0:05
  ...       ...     ...     ....     ...
  BAT      01-01    13:05   0.04    10:02
  BAT      01-02    9:07    0.05     0:03
  BAT      01-02    9:10    0.06     0:04

Столбец time_diff представляет собой разницу во времени между двумя наблюдениями с использованием кода: df['time_diff']=df['time'].shift(-1)-df['time']

Я хочу рассчитать взвешенный по времени спред для каждой акциив каждый день , но у меня возникла проблема с удалением / исключением последнего наблюдения в каждом складе.т.е. я хочу удалить / исключить эти наблюдения

 stock     date     time   spread  time_diff 
  VOD      01-01    11:04   0.02    22:00 
  BAT      01-01    13:05   0.04    10:02
  ...       ...     ...     ....     ...

, потому что их разница во времени включает переменную следующего дня.

Вопрос здесь в том, как удалить / исключить последние наблюдения для каждого фондового дня в pandas или dask кадре данных.Спасибо.

1 Ответ

1 голос
/ 01 мая 2019

Первая группа по столбцам, чтобы получить данные «за акцию в день». Затем используйте хвост с отрицательной индексацией, чтобы исключить последнюю строку.

df = df.groupby(['stock','date']).apply(lambda x: x.tail(-1))
...