You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Pandas按电压周期计算距离总和?

按电压周期计算Pandas DataFrame中Distance的总和

问题描述

我有一个包含Voltage(电压)和Distance(距离)列的Pandas DataFrame,数据如下:

import pandas as pd

data = {
    'Voltage': [52.59, 52.59, 51.01, 51.01, 49.63, 49.63, 54.59, 52.59, 51.01, 51.01, 49.63, 49.63],
    'Distance': [0, 0, 2.29, 0, 4.35, 0, 0, 0, 5.00, 0, 4.35, 0]
}

df = pd.DataFrame(data)

电压数据存在两个周期:第一个周期从52.59开始到49.63结束,第二个周期从54.59开始到49.63结束。需要分别计算每个周期内的Distance总和,预期结果为第一个周期6.64、第二个周期9.35。

解决方案

核心思路是先给每行数据标记所属周期,再按周期分组求和,具体步骤如下:

1. 标记周期起始点

通过电压值判断每个周期的起始位置:

  • 第一个周期起始为序列开头的52.59(或前一行是49.63时的52.59)
  • 第二个周期起始为54.59

代码实现:

# 标记周期起始行:电压为54.59,或是52.59且前一行是49.63(含第一行)
df['is_cycle_start'] = (df['Voltage'] == 54.59) | \
                       ((df['Voltage'] == 52.59) & 
                        (df['Voltage'].shift(1).fillna(49.63) == 49.63))

2. 生成周期分组ID

对起始点做累积求和,为每个周期分配唯一ID:

df['cycle_id'] = df['is_cycle_start'].cumsum()

3. 按周期分组求和

用groupby按周期ID分组,计算每个周期的Distance总和:

cycle_distance_sum = df.groupby('cycle_id')['Distance'].sum()
print(cycle_distance_sum)

运行结果

执行后输出:

cycle_id
1    6.64
2    9.35
Name: Distance, dtype: float64

如果需要直接提取数值,可使用cycle_distance_sum.to_dict()或cycle_distance_sum.values获取。


内容的提问来源于stack exchange,提问作者appu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:58:09