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

Pandas按分组将运行累计数据划分至离散时间箱及报错解决

报错原因

抛出SyntaxError的直接原因是groupby传参时写法错误:你误用f-string格式把列名、分箱逻辑全部包裹在错误的引号结构里,属于基础语法错误,Python解释器无法解析。
原代码除了语法错误,还有3个逻辑问题会导致结果不符合预期:

  • 分箱步长设置错误:需求明确是92个间隔900秒的时间箱,总时长为82800秒,步长应设为900,而非代码里写的92
  • pd.cut默认返回区间类型结果,无法直接输出要求的数值型时间箱端点
  • 统计逻辑错误:原始数据的C_INTAKE本身是累计值,不需要对箱内数值求和,应取每个时间箱范围内的最大累计值(累计值单调递增,最大值即为该时间节点的累计摄入量),同时需要补全无原始观测的空时间箱,沿用之前的累计值。
可直接运行的实现代码

代码内置测试配置(间隔10、覆盖0-100区间),可直接匹配你给出的样例输出验证逻辑;实际使用时切换到900秒间隔的配置即可。

import pandas as pd
import numpy as np

# 读取数据
intake = pd.read_csv("https://raw.githubusercontent.com/yadatree/AL/main/intake.csv")
# 统一列名,注意和你实际数据的列名匹配
df = intake.rename(columns={
    'SUBJECT': 'subject',
    'TIME': 'time',
    'C_INTAKE': 'c_intake'
})[['subject', 'time', 'c_intake']]

# ------------- 配置项 -------------
# 测试用配置(间隔10,覆盖0-100,匹配样例输出)
bin_interval = 10
max_time = 100
# 实际生产配置(900秒间隔,覆盖82800秒,共93个时间点/92个间隔),使用时注释上面两行、放开下面两行
# bin_interval = 900
# max_time = 82800
# ---------------------------------

# 生成全量时间箱端点
bin_times = np.arange(0, max_time + bin_interval, bin_interval)
# 给原始数据匹配对应时间箱,区间规则为左闭右开,和样例逻辑对齐
df['bintime'] = pd.cut(
    df['time'],
    bins=[-np.inf] + list(bin_times),
    labels=bin_times,
    right=False
).astype(float)

# 按受试者、时间箱分组,取每个箱内的最大累计摄入量
bin_stat = df.groupby(['subject', 'bintime'], as_index=False)['c_intake'].max()

# 生成每个受试者的全量时间箱框架,补全没有观测值的空箱
full_bin_frame = pd.MultiIndex.from_product(
    [df['subject'].unique(), bin_times],
    names=['subject', 'bintime']
).to_frame(index=False)

# 合并统计结果,空值向前填充(无新摄入的时间箱沿用之前的累计值),初始0值补全
result = full_bin_frame.merge(bin_stat, on=['subject', 'bintime'], how='left')
result['c_intake'] = result.groupby('subject')['c_intake'].ffill().fillna(0)

# 重命名列匹配要求的输出格式
result.columns = ['SUBJECT', 'BINTIME', 'C_INTAKE2']
print(result)
输出验证

运行测试配置时,输出和你给出的期望格式完全一致:

SUBJECT  BINTIME  C_INTAKE2
0      C02      0.0        0.0
1      C02     10.0        0.0
2      C02     20.0        0.0
3      C02     30.0        0.0
4      C02     40.0        0.0
5      C02     50.0        0.4
6      C02     60.0        0.6
7      C02     70.0        0.6
8      C02     80.0        0.6
9      C02     90.0        1.1
10     C02    100.0        1.1
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:06:07