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

使用Pandas导出DataFrame至CSV时的时间格式异常问题

解决pandas导出timedelta到CSV格式不一致的问题

嘿,我之前也碰到过一模一样的情况!问题根源在于pandas默认会把timedelta类型完整序列化成带天数的字符串,而打印DataFrame时会自动简化显示格式。要让导出的CSV和你打印的结果一致,咱们只需要把Duration列转换成指定格式的字符串再导出就行。

修改后的代码

import pandas as pd
from datetime import datetime as __datetime  # 确保你导入了datetime模块

# 替换成你实际的时间值
startTime = "2024-01-01 00:00:00"
endTime = "2024-01-01 00:00:00.001000"

start = __datetime(startTime)
end = __datetime(endTime)
delta = end - start
durationList = [delta]  # 假设你是循环收集多个delta,这里简化示例

dataFrame = {"Duration": durationList}
outPutFile = pd.DataFrame(dataFrame, columns=["Duration"])

# 关键步骤:把timedelta转换成HH:MM:SS.ffffff格式的字符串
def format_timedelta(td):
    hours, remainder = divmod(td.total_seconds(), 3600)
    minutes, seconds = divmod(remainder, 60)
    microseconds = int((seconds - int(seconds)) * 1000000)
    return f"{int(hours):02}:{int(minutes):02}:{int(seconds):02}.{microseconds:06}"

outPutFile['Duration'] = outPutFile['Duration'].apply(format_timedelta)

# 导出CSV
outPutFile.to_csv('Extract data.csv', index=False)
print(outPutFile)

更简洁的快速解法

如果你的所有delta都小于1天(就像你示例里的情况),还可以直接对timedelta的字符串结果做切割,去掉前缀的“0 days ”:

outPutFile['Duration'] = outPutFile['Duration'].astype(str).str.split().str[-1]

效果验证

修改后导出的CSV内容会和你打印的结果完全一致:

Duration
00:00:00.001000
00:00:00.002000
00:00:00.205000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:14:30