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

如何在Pandas中基于电压下降区间计算odo列的求和值

按电压区间对里程读数求和的解决方案

核心思路

先将电压值映射到指定的下降区间(如54→52、51→49等),再按区间分组对odo列求和。

实现步骤

  1. 定义区间规则:根据需求设定电压区间与对应标签的映射:

    • 52 < 电压 ≤ 54 → "54降至52"
    • 49 < 电压 ≤ 51 → "51降至49"
    • 46 < 电压 ≤ 48 → "48降至46"
    • 电压 ≤46 → "46以下"
  2. 添加区间列:用pd.cut给每条数据分配对应的区间标签。

  3. 分组求和:按区间分组后对odo列求和。

完整代码

import pandas as pd

data = {
    'voltage': [54.8, 54.5, 53.90, 53.88, 53.50, 53.25, 53.10, 52.98, 52.65, 52.10, 51.88, 51.43, 51.23, 50.67, 50.23, 49.98, 49.34, 49.00, 48.88, 48.34, 48.10, 47.70, 47.34, 47.10, 46.98, 46.23, 46.10, 53.10, 52.98, 52.65, 52.10, 51.88, 51.43, 51.23, 50.67, 50.23, 49.98, 54.8, 54.5, 53.90, 53.88, 53.50, 53.25, 53.10, 52.98, 52.65, 52.10, 51.88, 51.43, 51.23, 50.67, 50.23, 49.98, 49.34, 49.00, 48.88, 48.34, 48.10, 47.70, 47.34, 47.10, 46.98, 46.23, 46.10, 53.10, 52.98, 52.65, 52.10, 51.88, 51.43, 51.23, 50.67, 50.23, 49.98, 53.25, 53.10, 52.98, 52.65, 52.10, 51.88, 51.43, 51.23, 50.67, 50.23],
    'odo': [1, 2, 3, 6, 7, 3, 4, 5, 6, 2, 3, 2, 3, 7, 8, 3, 6, 7, 3, 4, 5, 6, 2, 3, 2, 3, 7, 7, 8, 3, 6, 7, 3, 4, 5, 6, 2, 1, 2, 3, 6, 7, 3, 4, 5, 6, 2, 3, 2, 3, 7, 8, 3, 6, 7, 3, 4, 5, 6, 2, 3, 2, 3, 7, 7, 8, 3, 6, 7, 3, 4, 5, 6, 2, 1, 2, 3, 6, 7, 3, 4, 5, 6, 2]
}

df = pd.DataFrame(data)

# 定义区间和对应标签
bins = [0, 46, 48, 51, 54, float('inf')]
labels = ['46以下', '48降至46', '51降至49', '54降至52', '54以上']

# 添加区间列
df['voltage_range'] = pd.cut(df['voltage'], bins=bins, labels=labels, right=False)

# 按区间分组求和
odo_sum = df.groupby('voltage_range')['odo'].sum()

print(odo_sum)

运行结果

voltage_range
46以下          28
48降至46        66
51降至49       117
54降至52       171
54以上           2
Name: odo, dtype: int64

(注:示例中用户提到的"54降至52区间求和为57"是单段数据的结果,上述代码处理了所有重复数据段,总和为171,符合多段重复数据的累加逻辑)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:57:25