修复pandas计算活动间隔新增cost_days列的形状不匹配错误
智能灯泡运行日志分组计算赋值形状不匹配问题
基础环境说明
- 运行环境基于Python,使用pandas存储智能灯泡开关运行日志DataFrame,包含5个字段:
date:时间戳ID_bulb:灯泡IDswitch:开关状态using_time:使用时长error:状态标记
- 已提供完整样例数据。
功能需求
需在DataFrame中新增cost_days列,规则如下:
- 仅
using_time字段值不为NaT的行填充计算结果,其余行该列统一填充0 - 计算逻辑:统计每个灯泡开启周期内,在自定义夜间时段(当日22:00至次日07:00)连续开启时长满n=5小时的天数
- 已提供符合要求的预期输出样例。
现有代码问题
现有实现参考@keramat的思路编写:
- 将索引倒序后,对
using_time的非空标记做cumsum运算,以此划分开关周期分组 - 自定义
rounder函数统计每个周期内符合要求的夜间天数 - 分组计算环节运行无异常
执行如下赋值语句时触发报错:
df.loc[df[df['using_time'].notna()].index, 'cost_days'] = temp.values
报错信息如下:
ValueError: shape mismatch: value array of shape (8,) could not be broadcast to indexing result of shape (7,)
初步根因判断
当数据集末尾行的using_time值为NaT时,现有分组逻辑会额外生成1个无效分组,导致最终计算得到的结果数组长度,与需要赋值的目标行长度不匹配,需修复该逻辑问题以输出符合预期的计算结果。
内容的提问来源于stack exchange,提问作者Carola
相关产品推荐
相关产品推荐

