Как заполнить пропущенные значения в pandas фрейме данных нулями? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть pandas DataFrame со следующими значениями:

df =

1970-01-01 00:00:18        1        1     0         1             0
1970-01-01 00:00:19        0        0     0         1             0
1970-01-01 00:00:20        0        0     0         1             0
1970-01-01 00:00:25        0        1     0         0             1
1970-01-01 00:00:26        0        0     0         0             1

Теперь я хочу добавить строки для каждой недостающей секунды и заполнить значения новой строки нулями.

df =

1970-01-01 00:00:18        1        1     0         1             0
1970-01-01 00:00:19        0        0     0         1             0
1970-01-01 00:00:20        0        0     0         1             0
1970-01-01 00:00:21        0        0     0         0             0
1970-01-01 00:00:22        0        0     0         0             0
1970-01-01 00:00:23        0        0     0         0             0
1970-01-01 00:00:24        0        0     0         0             0
1970-01-01 00:00:25        0        1     0         0             1
1970-01-01 00:00:26        0        0     0         0             1

Я изучил переиндексацию и ресамплировал, но не нашел способа заставить его работать.

В идеале, я также хотел бы удалить часть '1970-01-01' из метка времени. Но это не имеет приоритета.

1 Ответ

2 голосов
/ 21 апреля 2020

Использовать DataFrame.asfreq при работе с DatetimeIndex, при необходимости последний конвертировать index в столбец:

print (df)
                  date  a  b  c  d  e
0  1970-01-01 00:00:18  1  1  0  1  0
1  1970-01-01 00:00:19  0  0  0  1  0
2  1970-01-01 00:00:20  0  0  0  1  0
3  1970-01-01 00:00:25  0  1  0  0  1
4  1970-01-01 00:00:26  0  0  0  0  1

df['date'] = pd.to_datetime(df['date'])

df = df.set_index('date').asfreq('S', fill_value=0).reset_index()
print (df)
                 date  a  b  c  d  e
0 1970-01-01 00:00:18  1  1  0  1  0
1 1970-01-01 00:00:19  0  0  0  1  0
2 1970-01-01 00:00:20  0  0  0  1  0
3 1970-01-01 00:00:21  0  0  0  0  0
4 1970-01-01 00:00:22  0  0  0  0  0
5 1970-01-01 00:00:23  0  0  0  0  0
6 1970-01-01 00:00:24  0  0  0  0  0
7 1970-01-01 00:00:25  0  1  0  0  1
8 1970-01-01 00:00:26  0  0  0  0  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...