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

Pandas DataFrame处理速度极慢问题求助

优化15分钟时间间隔分组求和的方案

嘿,我完全懂你现在的困扰——用循环遍历每个时间间隔去计算求和,处理七万多条数据时慢到离谱,5小时的等待确实太折磨人了。咱们直接换用pandas的内置矢量化时间分组工具,效率能提升好几个数量级,处理完这些数据最多也就几秒!

为什么你的原方法这么慢?

你原来的思路是手动生成时间间隔列表,再逐个循环筛选数据求和,这属于Python层面的逐次循环操作。Python的循环本身就慢,加上每次筛选都要遍历整个数据集,七万多条数据循环几十上百次,时间自然就堆起来了。而pandas的内置分组工具是底层用C实现的矢量化操作,能一次性完成所有分组计算,根本不需要手动循环。

具体优化方案

首先确保你的datetime列是datetime类型(如果不是先转换):

import pandas as pd

# 转换datetime列为正确的时间类型
df['datetime_column'] = pd.to_datetime(df['datetime_column'])

方案1:用resample(专门针对时间序列的聚合工具)

resample是pandas为时间序列数据量身打造的分组工具,用法非常直观:

# 将datetime列设置为索引(resample需要时间类型的索引)
df.set_index('datetime_column', inplace=True)

# 按15分钟间隔对目标变量求和
# '15T'代表15分钟,label='left'表示用每个时间间隔的左边界作为结果的时间标签
result_df = df['target_variable'].resample('15T', label='left').sum()

# 如果需要把时间索引重新变回列
result_df = result_df.reset_index()

方案2:用pd.Grouper(无需修改原DataFrame索引)

如果你不想改动原数据的索引,用Grouper更方便:

# 直接按datetime列和15分钟间隔分组求和
result_df = df.groupby(
    pd.Grouper(key='datetime_column', freq='15T', label='left')
)['target_variable'].sum().reset_index()

额外注意事项

  • 如果你的数据中存在缺失的15分钟间隔(比如某段时间没有数据),可以在求和后用fillna(0)填充为0,保证时间序列的连续性:
    result_df = result_df.fillna(0)
    
  • 确认datetime列没有无效的时间值,否则会影响分组结果,可以用df['datetime_column'].isna().sum()检查缺失值。

用上面的方法处理75000条数据,绝对不会超过10秒,完全能解决你现在的性能问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:12:39