作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我正在尝试为成员(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/
我是一名优秀的程序员,十分优秀!