熊猫重塑日期序列



我有一个包含因子和时间间隔的表。我想做的是得到一个长表,每个日期的间隔在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

我该怎么做?

您可以使用melt进行重塑,然后使用groupbyresample填充dates:

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

注意:

这个功能在pandas 0.18.1中是新的。

相关内容

  • 没有找到相关文章

最新更新