首页 > 解决方案 > 基于列条件的前向填充熊猫

问题描述

我有以下数据框。对于我拥有的每个 ID,我想将填充从 startTime 转发到 endTime。

id current    startTime  endTime
1  2015-05-10 2015-05-10 2015-05-12
2  2015-07-11 2015-07-11 2015-07-13
3  2015-10-01 2015-10-01 2015-10-03
4  2015-12-01 None       None

这是我的预期输出:

id current    
1  2015-05-10
1  2015-05-11
1  2015-05-12 
2  2015-07-11 
2  2015-07-12 
2  2015-07-13 
3  2015-10-01 
3  2015-10-02 
3  2015-10-03
4  2015-12-01

标签: pythonpandas

解决方案


我为此使用date_range和。explode

df['current'] = df.apply(lambda row: row['current'] if row['startTime'] is None else pd.date_range(row['startTime'], row['endTime'], freq='D'), axis=1) 

df = df.explode('current')

推荐阅读