python - 基于列条件的前向填充熊猫
问题描述
我有以下数据框。对于我拥有的每个 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
解决方案
我为此使用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')
推荐阅读
- javascript - console.log() 和 array.reverse 意外行为,reactjs
- python - 如何在python脚本中添加文件路径
- angularjs - Angular 3D Carousel - 延迟后自动滑动不起作用
- google-apps-script - 将函数用作 onEdit-Trigger 或单元函数时,授权丢失
- postgresql - 获取表的现有和以前的列数
- ruby-on-rails - 在 Rails 中连接外部 redshift 数据库时出错
- css - 造型辅助导航栏项目文件夹 - Squarespace - Jaunt 模板
- php - 加密/解密密钥交换 PHP/SQL
- spring-mvc - 使用 Saml 和 Ldap 在 Spring MVC 应用程序中实现 SSO
- postgresql - POSTGRESQL:错误:列引用“尝试”不明确