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

如何在Pandas中按日期循环遍历时间序列数据

遍历Pandas时间序列中的每一天进行处理

没问题,我来帮你实现这个需求——不用提前知道所有日期,自动遍历每一天的数据做处理,最后把结果汇总起来。

核心思路

既然你的DateTime列已经是datetime64[ns]类型,我们可以先从时间序列里提取唯一的日期部分,然后逐个遍历这些日期,筛选出当日的所有数据,完成计算后把结果收集起来,最后合并成最终的表格。

完整代码示例

假设我们要计算每一天C_CL和C_EB的均值、最大值作为当日处理结果,代码如下:

import pandas as pd

# 还原你的示例DataFrame
data = {
    'DateTime': ['2018-01-03 10:30', '2018-01-03 10:50', '2018-01-03 11:10', '2018-01-03 11:30',
                 '2018-01-04 10:30', '2018-01-04 10:50', '2018-01-04 11:10', '2018-01-04 11:30'],
    'C_CL': [-0.002726, -0.005832, -0.006966, -0.01883, -0.0021, 0.006887, -0.00076, 0.002282],
    'C_EB': [-0.002921, -0.005343, -0.007278, -0.019026, -0.001261, 0.00595, -0.000717, 0.002152]
}
df = pd.DataFrame(data)
df['DateTime'] = pd.to_datetime(df['DateTime'])  # 确保列是datetime类型

# 步骤1:提取所有唯一的日期(仅保留年/月/日,忽略时间)
unique_dates = df['DateTime'].dt.date.unique()

# 步骤2:初始化空列表存储每日处理结果
daily_results = []

# 步骤3:遍历每个唯一日期
for date in unique_dates:
    # 筛选当日的所有数据
    daily_data = df[df['DateTime'].dt.date == date]
    
    # 自定义处理逻辑,这里以计算均值、最大值为例
    processed = {
        'Date': date,
        'C_CL_mean': daily_data['C_CL'].mean(),
        'C_CL_max': daily_data['C_CL'].max(),
        'C_EB_mean': daily_data['C_EB'].mean(),
        'C_EB_max': daily_data['C_EB'].max()
    }
    
    # 将处理结果加入列表
    daily_results.append(processed)

# 步骤4:合并所有结果为最终DataFrame
final_df = pd.DataFrame(daily_results)
print(final_df)

关键部分解释

  • df['DateTime'].dt.date:把datetime类型列转换为仅包含日期的对象,实现按天筛选的基础。
  • unique():自动提取数据中所有不重复的日期,完全不需要提前知晓日期范围。
  • daily_data = df[df['DateTime'].dt.date == date]:精准筛选当日数据,效果和你用df['2018-01-04']一致,但通用性更强。

你可以根据实际需求修改processed里的计算逻辑,比如换成求和、标准差,或者其他自定义运算~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:03:33