python Pandas : How fill date ranges in a multiindex

标签 python pandas

假设我正在尝试为成员(member)业务组织销售数据。

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

我无法用中间日期填充“日期”列。那就是:我想要一组连续的月份而不是间隔。另外,我需要使用 ffill 填充列中缺失的数据。

我尝试了不同的方法,例如堆栈/取消堆栈和重建索引,但出现了不同的错误。我猜有一种干净的方法可以做到这一点。执行此操作的最佳做​​法是什么?

假设多索引数据结构:

                 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

和想要的结果

                   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

最佳答案

你可以这样做:

>>> 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

然后就是.fillna如果需要,在 sales 列上。

关于 python Pandas : How fill date ranges in a multiindex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256653/

相关文章:

python - Pandas 的求和行为是预期的吗?

python - 寻找一种方法来加速 Pandas 中的这个应用功能

带有子模块的 Python 模拟补丁

python - attrs 如何欺骗调试器进入自动生成的代码?

python - 如何查询Python事件循环单调时钟分辨率

python - 当识别字母数字或数字时,如何在每个字符之间获取空格?

python - 如何在 Python 中使用 factorize() 后获取原始值?

python - 将标签列插入数据框中的列内容

Python:加载 CSV,第一列作为行名,第一行作为列名

python - pandas 选择数据透视表的子集