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

如何用Pandas按日计算电池充电率(时间序列数据处理)

按日计算电池充电率的解决方案

核心思路

通过按日期分组处理实现每日逻辑重置,对每个日期组内的Capacity值逐行累计,直到达到当日EnergySum阈值,超出阈值后后续行充电量设为0。

代码实现(基于Pandas)

假设你的CSV包含Datetime(时间戳)、Capacity(每小时可用充电容量)、EnergySum(当日总损耗量)三列,代码如下:

import pandas as pd

# 读取CSV数据
df = pd.read_csv("battery_data.csv")

# 处理时间列,提取日期作为分组键
df["Datetime"] = pd.to_datetime(df["Datetime"])
df["Date"] = df["Datetime"].dt.date

# 定义单日期组的充电量计算函数
def compute_daily_charged(group):
    daily_energy_need = group["EnergySum"].iloc[0]  # 当日总需补充电量
    remaining = daily_energy_need
    charged_values = []
    
    for cap in group["Capacity"]:
        if remaining <= 0:
            charged_values.append(0)
            continue
        # 计算当前行应充电量
        if cap <= remaining:
            charged_values.append(cap)
            remaining -= cap
        else:
            charged_values.append(remaining)
            remaining = 0
    
    group["Charged"] = charged_values
    return group

# 按日期分组应用计算逻辑
processed_df = df.groupby("Date").apply(compute_daily_charged).drop(columns="Date")

# 保存结果到新CSV
processed_df.to_csv("battery_charged_result.csv", index=False)

代码说明

  1. 日期分组:通过提取Datetime的日期部分创建Date列,用groupby("Date")实现每日数据独立处理,自动重置每日的累计逻辑。
  2. 逐行计算:对每个日期组,初始化remaining为当日EnergySum,遍历每行Capacity:
    • 若剩余需补充电量≤0,直接填0;
    • 若当前Capacity未超过剩余量,全部充入,剩余量扣除对应值;
    • 若当前Capacity超过剩余量,仅充入剩余部分,剩余量置0,后续行均填0。
  3. 结果输出:处理完成后删除临时的Date列,保存为新CSV文件。

适配注意事项

  • 如果你的EnergySum列在同一日期内存在多个不同值,需先确认数据逻辑(比如取当日最大值/平均值),修改daily_energy_need的取值方式即可。
  • 若CSV中无Datetime列但有单独的日期列,直接用该日期列分组即可,无需提取日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:36:33