Как заполнить пропущенную строку предыдущей или следующей строкой в ​​Python Python - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть примеры данных, подобные этим.

date        time option_type   open    high     low   close  volume

6031    9/27/2018   09:17   CE  11500   0.15    0.15    0.15    0.15    1500


6131    9/27/2018   15:19   CE  11500   0.05    0.05    0.05    0.05    1500
6132    9/27/2018   15:22   CE  11500   0.05    0.05    0.05    0.05    75
6133    9/27/2018   15:24   CE  11500   0.05    0.05    0.05    0.05    225
6134    9/27/2018   15:25   CE  11500   0.05    0.05    0.05    0.05    75
6135    9/27/2018   15:26   CE  11500   0.05    0.05    0.05    0.05    600

Некоторые строки там отсутствуют.Например, 09:15, 09:16, затем 15:20, 15:21 и т. Д.

Я хочу заполнить отсутствующие строки предыдущим значением строки в случае 15: 20/15: 21 и следующей доступной строкой вдело 09: 15/09: 16. 09: 17 значения будут использоваться для 09: 15/09: 16. 15: 20 значения будут использоваться для 15: 21/15: 22.

Не могли бы вы помочь мне в этом.Заранее благодарим и ценим ваши усилия и время.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Шаг 1: Нахождение разницы во времени в последовательных строках:

df['deltaT'] = df.time.to_series().diff().dt.seconds.div(60, fill_value=0)

Выше приведен новый столбец о том, сколько разн.находится между последовательными строками

Шаг 2: репликация строк на основе нового столбца deltaT

df.reindex(df.index.repeat(df.deltaT))

Шаг 3: построение логики для увеличения столбца времени

df['time'] = pd.to_timedelta(df['time']) + pd.to_timedelta(df['deltaT'], unit='m')

Все еще не удаетсячтобы дать вам последнюю часть.

Если вы найдете это полезным и можете продолжить на этом. Отлично!

0 голосов
/ 07 декабря 2018

Я думаю, вы ищете что-то вроде этого:

df['time']=df['time'].fillna(method="ffill") #to carry the values forward
df['time']=df['time'].fillna(method="bfill") #to carry the values backwards

df

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...