Python Pandas:多索引中的填充日期范围

LPG*_*LPG 5 python pandas

假设我正在尝试为会员企业组织销售数据.

我只有开始和结束日期.理想情况下,开始日期和结束日期之间的销售额显示为1,而不是丢失.

我无法让"日期"列填充中间日期.那就是:我想连续几个月而不是差距.另外,我需要使用ffill填充列中的缺失数据.

我尝试过不同的方法,例如stack/unstack和reindex,但会出现不同的错误.我猜这是一个干净的方法来做到这一点.这样做的最佳做法是什么?

假设多索引数据结构:

                 variable     sales
vendor date                 
a      2014-01-01  start date 1
       2014-03-01    end date 1
b      2014-03-01  start date 1
       2014-07-01    end date 1
Run Code Online (Sandbox Code Playgroud)

并且期望的结果

                   variable   sales
vendor date                 
a      2014-01-01  start date 1
       2014-02-01  NaN        1
       2014-03-01    end date 1
b      2014-03-01  start date 1
       2014-04-01  NaN        1
       2014-05-01  NaN        1
       2014-06-01  NaN        1 
       2014-07-01    end date 1
Run Code Online (Sandbox Code Playgroud)

beh*_*uri 5

你可以做:

>>> f = lambda df: df.resample(rule='M', how='first')
>>> df.reset_index(level=0).groupby('vendor').apply(f).drop('vendor', axis=1)
                     variable  sales
vendor date                         
a      2014-01-31  start date      1
       2014-02-28         NaN    NaN
       2014-03-31    end date      1
b      2014-03-31  start date      1
       2014-04-30         NaN    NaN
       2014-05-31         NaN    NaN
       2014-06-30         NaN    NaN
       2014-07-31    end date      1
Run Code Online (Sandbox Code Playgroud)

如果需要,然后只.fillnasales列上.