2016-02-10 2 views
2

У меня есть следующий пример:ярлыка для заполнения недостающих даты

import numpy as np 
import pandas as pd 

idx1 = pd.period_range('2015-01-01', freq='10T', periods=1000) 

idx2 = pd.period_range('2016-01-01', freq='10T', periods=1000) 

df1 = pd.DataFrame(np.random.randn(1000), index=idx1, 
        columns=['A']) 
df2 = pd.DataFrame(np.random.randn(1000), index=idx2, 
        columns=['A']) 

frames = [df1, df2] 

df_concat = pd.concat(frames) 

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

Так я заполнил даты и переиндексирован фрейм данных:

start_total = df1.index[0] 
end_total = df2.index[-1] 
idx_total = pd.period_range(start=start_total, end=end_total, freq='10T') 
df_total = df_concat.reindex(idx_total, fill_value=np.nan) 
df_miss = df_total[df_total.isnull()] 

Есть ли более короткая версия для последних сегментов кода?

Нечто вроде df_concat.fill_missing_dates? Это была предоставлена ​​scikit таймсерии: scikits.timeseries.TimeSeries.fill_missing_dates

+0

Может помочь 'печати df_concat.resample ('10T')' ' – jezrael

+1

df.fill_missing_dates (fill_value =. ..) 'эквивалентно' df.fillna (value = ...) '(если NaN уже есть, и вы не меняете частоту), или' df.resample (freq) .fillna (value) ' – joris

ответ

1

Я думаю, что вы можете использовать resample:

df_total = df_concat.resample('10T') 
print df_total[df_total.isnull()] 

        A 
2015-01-01 00:00:00 NaN 
2015-01-01 00:10:00 NaN 
2015-01-01 00:20:00 NaN 
2015-01-01 00:30:00 NaN 
2015-01-01 00:40:00 NaN 
2015-01-01 00:50:00 NaN 
2015-01-01 01:00:00 NaN 
2015-01-01 01:10:00 NaN 
2015-01-01 01:20:00 NaN 
2015-01-01 01:30:00 NaN 
2015-01-01 01:40:00 NaN 
2015-01-01 01:50:00 NaN 
2015-01-01 02:00:00 NaN 
2015-01-01 02:10:00 NaN 
2015-01-01 02:20:00 NaN 
Смежные вопросы