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

如何将Excel中超过24小时的时长数据导入Pandas并转为timedelta

解决Excel时长数据导入Pandas的格式混乱问题

问题原因

Excel中超过24小时的时长会被底层存储为日期时间类型(Excel的时间本质是天数的小数),pd.read_excel会优先解析单元格的格式,直接指定dtype={'Total time':'str'}无法获取到Excel单元格显示的原始时长字符串,最终导致格式混乱且无法直接转为timedelta。


方法1:直接读取单元格显示的字符串(推荐)

通过openpyxl读取Excel单元格的显示文本,跳过Pandas的自动解析,直接拿到原始时长格式:

import pandas as pd
from openpyxl import load_workbook

# 加载Excel文件
wb = load_workbook('data.xlsx')
ws = wb.active

# 提取所有单元格的显示文本
data = []
for row in ws.iter_rows(values_only=False):
    row_data = [cell.text for cell in row]
    data.append(row_data)

# 转为DataFrame并转换为timedelta类型
df = pd.DataFrame(data[1:], columns=data[0])
df['Total time'] = pd.to_timedelta(df['Total time'])

方法2:对已导入的混乱数据进行转换

如果已经完成数据导入,可以通过手动计算将日期时间格式转换为对应时长:

import pandas as pd
from datetime import datetime

# 读取原始数据
df = pd.read_excel('data.xlsx')

def convert_to_timedelta(value):
    if isinstance(value, datetime):
        # Excel日期起点为1899-12-30(兼容Excel的1900闰年bug),计算与该日期的时间差
        return value - datetime(1899, 12, 30)
    else:
        # 纯时间格式直接转换
        return pd.to_timedelta(str(value))

df['Total time'] = df['Total time'].apply(convert_to_timedelta)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:13:15