Pandas将row-difference为1行的差值累加上行以计算车辆加油量
Pandas 拆分加油记录合并解决方案
实现思路
- 先给每个加油记录分组:每当遇到
row-difference为0或NaN(第一条记录)时生成新的分组ID,后续row-difference为1的行自动归到最近的上一分组 - 分组后按规则聚合各字段:
Difference (%)列做求和计算,累加同组所有拆分条目的差值- 油箱液位
Bränslenivå (%)、里程数Vägmätare (km)、时间Tid取分组最后一行的值 - 行号
row、事件类型Händelse、row-difference取分组首行的值,保留记录起始信息
完整实现代码
将以下代码追加到你现有代码的末尾即可得到合并后的结果:
# 生成分组ID df1filt['group_id'] = (df1filt['row-difference'].eq(0) | df1filt['row-difference'].isna()).cumsum() # 按分组聚合得到最终结果 df_merge = df1filt.groupby('group_id').agg( row=('row', 'first'), Händelse=('Händelse', 'first'), Tid=('Tid', 'last'), **{ 'Bränslenivå (%)': ('Bränslenivå (%)', 'last'), 'Vägmätare (km)': ('Vägmätare (km)', 'last'), 'Difference (%)': ('Difference (%)', 'sum'), 'row-difference': ('row-difference', 'first') } ).reset_index(drop=True) # 输出查看结果 print(df_merge)
该代码兼容你现有逻辑里对row-difference的自定义修改规则,不会冲突。
内容的提问来源于stack exchange,提问作者Leopold Wahlbeck
相关产品推荐
相关产品推荐

