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

如何高效按条件汇总文件中指定行的数值?

高效实现按时间段分组求和的方案

针对你需要按Id、Date和指定时间段汇总value的需求,用Python的Pandas是最高效的方案,尤其适合处理大规模CSV数据。以下是具体实现步骤:

步骤说明

  • 读取CSV数据并解析时间列,方便时间段判断
  • 定义规则,将每条数据映射到对应的时间段结束时间
  • 按Id、Date和结束时间段分组,对value求和
  • 调整输出格式,匹配预期结果

完整代码实现

import pandas as pd

# 读取CSV数据(替换为你的文件路径)
df = pd.read_csv('your_data.csv')

# 将Time列转为时间格式,提取小时用于判断时间段
df['Time'] = pd.to_datetime(df['Time'], format='%H:%M:%S')
df['hour'] = df['Time'].dt.hour

# 定义时间段与结束时间的映射逻辑
def map_end_time(hour):
    if 1 <= hour <= 6:
        return '06:00:00'
    elif 7 <= hour <= 12:
        return '12:00:00'
    elif 13 <= hour <= 18:
        return '18:00:00'
    elif 19 <= hour <= 23 or hour == 0:
        return '00:00:00'
    return None

df['end_time'] = df['hour'].apply(map_end_time)

# 分组求和,按Id、Date、结束时间聚合
result = df.groupby(['Id', 'Date', 'end_time'], as_index=False)['value'].sum()

# 重命名列以匹配预期输出
result.rename(columns={'end_time': 'Time'}, inplace=True)

# 输出结果(如需保存为CSV,使用result.to_csv('output.csv', index=False))
print(result)

结果验证

运行代码后,针对你提供的示例数据,会得到如下输出:

IdDateTimevalue
110012024090106:00:002.8
110012024090112:00:001.9
110022024090106:00:002.1
110022024090112:00:002.15

完全匹配你的预期结果。

性能说明

Pandas的分组聚合基于底层优化实现,处理百万级以上数据时效率远高于手动循环。如果数据量极大,还可以结合dask.dataframe进行并行处理,进一步提升速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:25:08