2016-08-11 2 views
1

인자와 시간 간격이있는 표가 있습니다. 내가 원하는 것은 START_DATEEND_DATE 사이의 간격으로 각 날짜가 긴 테이블을 만드는 것입니다.팬더 재구성 날짜 순서

dt_in = pd.DataFrame({'factor':['A','B'], 
      'START_DATE':[pd.Timestamp('2015-01-01'),pd.Timestamp('2016-02-05')], 
      'END_DATE':[pd.Timestamp('2015-01-04'),pd.Timestamp('2016-02-07')]}) 

    END_DATE START_DATE factor 
0 2015-01-04 2015-01-01 A 
1 2016-02-07 2016-02-05 B 

나는이 같은 출력 테이블을 갖고 싶어 :

dt_out = pd.DataFrame({'factor': ['A','A','A','A','B','B','B'], 
        'DATE': ['2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04', 
          '2016-02-05', '2016-02-06', '2016-02-07']}) 
    DATE factor 
0 2015-01-01 A 
1 2015-01-02 A 
2 2015-01-03 A 
3 2015-01-04 A 
4 2016-02-05 B 
5 2016-02-06 B 
6 2016-02-07 B 

내가 어떻게 할 수 있습니까?

답변

2

당신은 dates를 채우는 resample와 다음 groupby을 재편하기위한 melt을 사용하고 있습니다 :

df = pd.melt(dt_in, id_vars='factor', value_name='DATE') 
     .set_index('DATE') 
     .drop('variable',axis=1) 

print (df) 
      factor 
DATE    
2015-01-04  A 
2016-02-07  B 
2015-01-01  A 
2016-02-05  B 

print (df.groupby('factor') 
     .resample('1D') 
     .ffill() 
     .reset_index(drop=True, level=0) 
     .reset_index()) 

     DATE factor 
0 2015-01-01  A 
1 2015-01-02  A 
2 2015-01-03  A 
3 2015-01-04  A 
4 2016-02-05  B 
5 2016-02-06  B 
6 2016-02-07  B 

주의 사항 :

이 funcionality는 pandas 0.18.1의 새로운 기능입니다.

+0

우수! 감사합니다. – BiXiC

+0

수락 해 주셔서 감사합니다. 행운을 빕니다! – jezrael