2016-10-05 2 views
1

나는 그런 시계열 dataframe에서 누락 평일를 삽입삽입 누락 평일 NaN이

import pandas as pd 
from pandas.tseries.offsets import * 
df = pd.DataFrame([['2016-09-30', 10, 2020], ['2016-10-03', 20, 2424], ['2016-10-05', 5, 232]], columns=['date', 'price', 'vol']).set_index('date') 
df['date'] = pd.to_datetime(df['date']) 
df = df.set_index('date') 

데이터를 한 시도하고 그들을 채우기는 다음과 같습니다

Out[300]: 
      price vol 
date     
2016-09-30  10 2020 
2016-10-03  20 2424 
2016-10-05  5 232 

내가 만들 수 있습니다 그 DateTimeIn에 따라 pd.date_range()

pd.date_range('2016-09-30', '2016-10-05', freq=BDay()) 
Out[301]: DatetimeIndex(['2016-09-30', '2016-10-03', '2016-10-04', '2016-10-05'], dtype='datetime64[ns]', freq='B') 

와 쉽게 주 일 시리즈 나는이 NaN으로 열 값을 내 df에서 누락 날짜를 추가하고 채울 싶습니다 덱스 그래서 내가 얻을 :이 작업을 수행 할 수있는 쉬운 방법이

Out[300]: 
      price vol 
date     
2016-09-30  10 2020 
2016-10-03  20 2424 
2016-10-04  NaN NaN 
2016-10-05  5 232 

가? 감사!

답변

1

다시 색인 사용할 수 있습니다 : 당신이 dataframe이 날짜를 유지로를 따라 같이 시작과 종료 날짜 순서를 지정할 필요없이 영업일에 대한 'B'를 지정 pandas.DataFrame.resample()을 사용할 수 있습니다, 또는

df.index = pd.to_datetime(df.index) 

df.reindex(pd.date_range('2016-09-30', '2016-10-05', freq=BDay())) 
Out: 
      price  vol 
2016-09-30 10.0 2020.0 
2016-10-03 20.0 2424.0 
2016-10-04 NaN  NaN 
2016-10-05 5.0 232.0 
+0

예! 정말 고맙습니다. –

+0

당신은 오신 것을 환영합니다. :) – ayhan

2

을 색인

df = df.resample('B').sum() 

#    price  vol 
# date      
# 2016-09-30 10.0 2020.0 
# 2016-10-03 20.0 2424.0 
# 2016-10-04 NaN  NaN 
# 2016-10-05 5.0 232.0 
+0

그것은 매우 산뜻합니다. 감사 –