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

基于Pandas DateTimeIndex计算连续行均值的问题

问题原因

你在df.loc['begin':'end']里把begin和end用引号括起来了,这会让pandas把它们当成字符串字面量去索引里匹配,而不是使用你定义的变量值,自然找不到对应数据,所以均值返回NaN。

修正后的循环代码

把引号去掉,直接使用变量即可:

import pandas as pd
from pandas.tseries.offsets import DateOffset
import numpy as np

df = df.set_index(['Date'])

for num in range(0,3):
    begin = pd.Timestamp('2008-01-01') + DateOffset(months=num)
    end = pd.Timestamp('2008-02-01') + DateOffset(months=num)
    
    print(begin, end)
    # 去掉引号,直接用变量begin和end
    print(df.loc[begin:end]['Number'].mean())
更高效的替代方案(推荐)

你的需求是计算每连续两行Number的平均值,用循环处理数百行效率很低,直接用pandas的矢量化操作更简洁高效:

方法1:使用rolling窗口

# 设置窗口大小为2,计算当前行与前一行的均值
df['rolling_mean'] = df['Number'].rolling(window=2).mean()

生成的新列中,每行的值是当前行与上一行Number的平均值(第一行因无前置数据,值为NaN)。

方法2:使用shift手动计算

# 计算当前行与上一行的均值
df['pair_mean'] = (df['Number'] + df['Number'].shift(1)) / 2

同样,第一行值为NaN,后续每行都是连续两行的平均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.04 22:02:31