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

如何用Pandas编写函数计算指定时间范围内Test 1列的平均值?

如何实现基于时间范围计算Test 1列平均值的函数?

嘿,我来帮你搞定这个需求!先提个小细节:你代码里的fields列表写的是['Time', 'Time 1', 'Time 2'],但问题里说的是Test 1和Test 2,应该是笔误吧?我下面会按照问题里的Test 1和Test 2来调整,要是实际字段是Time的话你改回去就行~

第一步:确保时间列是可比较的格式

首先得把Time列转换成datetime类型,不然直接用字符串比较时间范围会出问题。如果导入后Time还是字符串格式,执行下面这行代码转换:

df['Time'] = pd.to_datetime(df['Time'])

第二步:编写计算平均值的函数

接下来就可以写核心函数了,我们给它起个直观的名字calculate_test1_avg,接收起始时间和结束时间两个参数:

def calculate_test1_avg(start_time, end_time):
    # 筛选出Time列在起止时间之间的数据
    filtered_data = df[(df['Time'] >= start_time) & (df['Time'] <= end_time)]
    # 计算Test 1列的平均值,没有数据时会返回NaN,也可以根据需求改成返回0或者提示
    return filtered_data['Test 1'].mean()

第三步:调用函数的示例

调用的时候直接传符合格式的时间就行,不管是字符串还是datetime对象都可以:

# 举个例子:计算2024年1月1日到2024年1月10日的Test 1平均值
average = calculate_test1_avg('2024-01-01', '2024-01-10')
print(f"指定时间范围内Test 1的平均值是: {average}")

额外小提示

  • 如果Time列有缺失值,可以先执行df = df.dropna(subset=['Time'])去掉这些无效行
  • 要是筛选后没有符合条件的数据,函数会返回NaN,你可以在函数里加个判断优化体验:
    if filtered_data.empty:
        print("没有找到指定时间范围内的数据")
        return 0
    

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

相关产品推荐
方舟 Agent Plan

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

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