假设我正在尝试为会员企业组织销售数据.
我只有开始和结束日期.理想情况下,开始日期和结束日期之间的销售额显示为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)
你可以做:
>>> 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)
如果需要,然后只.fillna在sales列上.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |