如何在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
相关产品推荐
相关产品推荐

