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

从DataFrame提取车辆单日充放电SOC极值数据需求

问题描述

每台车辆存在多次充放电记录,需提取单台车辆单日的充电SOC最小值、充电SOC最大值、放电SOC最小值、放电SOC最大值。

给定数据集df1:

Date             Time    vehicle_no  soc     SOC Diff
0   2022-10-01  02:27:56    DL21GD0100  80.0    0
1   2022-10-01  02:28:26    DL21GD0100  80.0    Discharging
2   2022-10-01  02:28:56    DL21GD0100  80.0    Discharging
3   2022-10-01  02:29:26    DL21GD0100  80.0    Discharging
4   2022-10-01  02:29:56    DL21GD0100  69.0    Discharging
5    2022-10-01 02:29:56    DL21GD0100  70.0    Charging
6    2022-10-01 02:29:56    DL21GD0100  71.0    Charging
7    2022-10-01 02:29:56    DL21GD0100  72.0    Charging
8   2022-10-01 03:16:00    DL21GD0100   63.0    Discharging
9  2022-10-01  03:16:30    DL21GD0100    23.0    Discharging
10  2022-10-01  04:17:00    DL21GD0100    54.0    Charging
11  2022-10-01  09:17:30    WB25M9298   24.0    Charging
12  2022-10-01  09:18:00    WB25M9298   25.0    Charging
解决方案

使用pandas的分组聚合功能即可实现需求,步骤如下:

  1. 过滤无效状态:排除SOC Diff为0的记录(该状态既非充电也非放电)
  2. 分组聚合:按日期、车辆编号分组,再针对充放电状态分别计算SOC的最小、最大值
  3. 重塑结果格式:将聚合结果转换为宽表,让数据更直观

代码实现

import pandas as pd

# 过滤无效状态记录
df_filtered = df1[df1['SOC Diff'] != '0']

# 分组聚合:按日期、车辆编号+充放电状态,计算SOC的min和max
agg_result = df_filtered.groupby(['Date', 'vehicle_no', 'SOC Diff'])['soc'].agg(['min', 'max']).unstack()

# 调整列名,提升可读性
agg_result.columns = [
    '充电SOC最小值', '充电SOC最大值',
    '放电SOC最小值', '放电SOC最大值'
]

# 重置索引,将日期和车辆编号转为普通列
final_result = agg_result.reset_index().fillna(pd.NA)

print(final_result)

输出结果

Date vehicle_no  充电SOC最小值  充电SOC最大值  放电SOC最小值  放电SOC最大值
0  2022-10-01  DL21GD0100       54.0       72.0       23.0       80.0
1  2022-10-01  WB25M9298       24.0       25.0        NaN        NaN

关键说明

  • 同时按Date和vehicle_no分组,确保聚合范围是单日单车辆
  • 用unstack()将充放电状态从行维度转换为列维度,得到结构化的宽表
  • 缺失值用pd.NA标记,对应车辆单日只有充电/放电一种记录的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:55:20