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

如何使用Python计算Excel中B列或C列的时间平均值?

用Python计算Excel时间列的平均值及时间差平均值

前置准备

先安装所需依赖库:

pip install pandas openpyxl

完整实现代码

以下是补充了平均值计算的完整代码,基于你已有的读取Excel、转换时间列的逻辑:

import pandas as pd

# 读取目标Excel文件(替换为你的文件名)
df = pd.read_excel('your_data.xlsx')

# 清理缺失值(避免计算时出错,可选)
df = df.dropna(subset=['B', 'C'])

# 将B、C列的时间字符串转为datetime类型
# 注意:format参数需匹配你的时间格式,比如带日期用'%Y-%m-%d %H:%M:%S'
df['B'] = pd.to_datetime(df['B'], format='%H:%M:%S')
df['C'] = pd.to_datetime(df['C'], format='%H:%M:%S')

# --- 计算单列时间平均值 ---
# B列时间平均值(转成时分秒格式输出)
b_col_avg = df['B'].mean()
print(f"B列时间平均值:{b_col_avg.strftime('%H:%M:%S')}")

# C列时间平均值
c_col_avg = df['C'].mean()
print(f"C列时间平均值:{c_col_avg.strftime('%H:%M:%S')}")

# --- 计算B、C列时间差的平均值 ---
# 先计算每行的时间差(单位:秒)
df['time_diff_seconds'] = (df['C'] - df['B']).dt.total_seconds()

# 求时间差的平均值
avg_diff_seconds = df['time_diff_seconds'].mean()

# 转成时分秒格式输出
hours = int(avg_diff_seconds // 3600)
minutes = int((avg_diff_seconds % 3600) // 60)
seconds = int(avg_diff_seconds % 60)
print(f"B与C列时间差的平均值:{hours:02d}:{minutes:02d}:{seconds:02d}")

# 也可以直接以分钟为单位输出
print(f"B与C列时间差的平均值(分钟):{avg_diff_seconds / 60:.2f}")

关键说明

  • 时间格式匹配:pd.to_datetime的format参数必须和Excel中时间字符串的格式完全一致,比如:
    • 纯时分秒:'%H:%M:%S'
    • 带日期的时间:'%Y-%m-%d %H:%M:%S'
    • 如果是Excel内置的时间格式(非字符串),可以省略format参数,pandas会自动识别
  • 缺失值处理:如果Excel中有空值,用dropna()删除对应行,或者用fillna()填充合理值,否则均值计算会报错
  • 时间差单位:可以根据需求将时间差转为秒、分钟、小时等,只需调整total_seconds()后的换算逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:05:46