【问题标题】:Forward fill pandas based on column conditions with increment基于具有增量的列条件前向填充熊猫
【发布时间】:2020-12-22 14:25:26
【问题描述】:

我有以下数据框。对于我拥有的每个 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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我为此使用date_rangeexplode

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

    【讨论】:

    • 是的,这扩展了它,谢谢!现在,如果我想在当前爆炸时保留多个列,explode 命令将如何工作?
    • Nvm 知道了!我可以做 newDF=df.explode('current')。谢谢!
    • 哦,是的。忘了你可以在数据框上爆炸。你的方法更有意义。我正在更新我的答案。
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 2019-05-04
    • 2019-06-05
    • 2019-06-18
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多