pandas dataframe NaN при переиндексации с помощью period_range - PullRequest
0 голосов
/ 05 марта 2019

Я хочу, чтобы код добавил новые строки, отсутствующие в кадре данных. Я получаю значения NaN при переиндексации с помощью period_range. Я получаю правильный period_range, но NaN вместо сохранения доступных значений для столбца «A». Ниже приведен пример кода:

Полагаю, проблема возникает из-за использования объектов PeriodIndex и DatetimeIndex.

                      A
2018-10-31 14:08:26 NaN
2018-10-31 14:08:27 NaN
2018-10-31 14:08:28 NaN
2018-10-31 14:08:29 NaN
2018-10-31 14:08:30 NaN


import pandas as pd

data=[['2018-10-31 14:08:26', 1],
      ['2018-10-31 14:08:28', 2],
      ['2018-10-31 14:08:30', 3]]

df = pd.DataFrame(data=data, columns=['time','A'])
df.time = pd.to_datetime(df.time)
ts = df.time
idx = pd.period_range(min(ts), max(ts),freq='s')
df = df.set_index('time',drop=True)
df = df.reindex( idx )

Ответы [ 2 ]

2 голосов
/ 05 марта 2019
data = [['2018-10-31 14:08:26', 1],
        ['2018-10-31 14:08:28', 2],
        ['2018-10-31 14:08:30', 3]]

df = pd.DataFrame(data=data, columns=['time','A'])
df['time'] = pd.to_datetime(df['time'])
df.set_index('time').resample('S').asfreq()

выход

>>> df
                        A
time    
2018-10-31 14:08:26     1.0
2018-10-31 14:08:27     NaN
2018-10-31 14:08:28     2.0
2018-10-31 14:08:29     NaN
2018-10-31 14:08:30     3.0

0 голосов
/ 05 марта 2019

Требуется изменить DatetimeIndex на PeriodIndex:

df = df.set_index('time',drop=True)
df.index=df.index.to_period('S')
df = df.reindex( idx )

                       A
2018-10-31 14:08:26  1.0
2018-10-31 14:08:27  NaN
2018-10-31 14:08:28  2.0
2018-10-31 14:08:29  NaN
2018-10-31 14:08:30  3.0
...