庞大的庞大熊猫合并

时间:2016-02-19 10:56:07

标签: pandas

假设我有一个"稀疏"框架如下:

From        To          X
2010-01-03  2011-05-01  A
2010-05-01  2013-08-09  B
2013-08-09  2013-12-31  C
...

我希望将它合并到一个密集的"所有日期的框架,以便我得到:

Date         X
2010-01-03   A
2010-01-04   A
...
2011-04-30   A
2011-05-01   B
2011-05-02   B
...
2013-08-08   B
2013-08-09   C
2013-08-10   C
...

我将如何在熊猫中做到这一点?感谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试stackgroupbyresample

print df
        From         To  X
0 2010-01-03 2011-05-01  A
1 2010-05-01 2013-08-09  B
2 2013-08-09 2013-12-31  C

#stack df
df = df.set_index('X').stack().reset_index(level=1, drop=True).reset_index()
                                                              .rename(columns={0:'date'})
print df
   X       date
0  A 2010-01-03
1  A 2011-05-01
2  B 2010-05-01
3  B 2013-08-09
4  C 2013-08-09
5  C 2013-12-31


#resample and fill missing data 
df = df.groupby('X').apply(lambda x: x.set_index('date')
                    .resample('D', how='first',fill_method='ffill'))
                    .reset_index(level=0, drop=True)
print df.head(10)
            X
date         
2010-01-03  A
2010-01-04  A
2010-01-05  A
2010-01-06  A
2010-01-07  A
2010-01-08  A
2010-01-09  A
2010-01-10  A
2010-01-11  A
2010-01-12  A