登录
首页 >  文章 >  python教程

PythonCSV时间计算教程

时间:2025-12-30 18:27:48 268浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Python处理CSV时间减法教程》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

如何在Python中对CSV文件中的时间字符串进行减法运算

本文介绍如何将CSV中以“HH:MM:SS”格式存储的时间字符串正确解析为可计算的时间对象,并实现精确的时长差值计算,避免直接转为数值类型导致的错误。

在使用 pandas 读取 CSV 文件时,若时间列(如 "23:03:00")未被自动识别为时间类型,df.iloc[1,2] 返回的是 Python 字符串(str),无法直接参与数学运算(如 y - x 会报 TypeError)。此时不能强行用 int() 或 float() 转换——因为时间不是标量数字,而是具有周期性和单位结构的逻辑量。

✅ 正确做法是:将字符串解析为 datetime.time 或 datetime.datetime 对象,再通过 timedelta 进行运算。推荐使用 datetime.strptime() 配合格式化字符串 %H:%M:%S 解析:

from datetime import datetime

# 示例:解析两行时间字符串
time_str1 = "23:03:00"
time_str2 = "23:01:00"

t1 = datetime.strptime(time_str1, "%H:%M:%S")
t2 = datetime.strptime(time_str2, "%H:%M:%S")

delta = t1 - t2  # 返回 datetime.timedelta 对象
print(delta)           # 输出:0:02:00
print(delta.total_seconds())  # 输出:120.0(秒数,便于进一步计算)

? 关键注意事项:

  • strptime() 要求格式严格匹配:%H(24小时制,00–23)、%M(分钟)、%S(秒),不可省略前导零;
  • 若时间跨日(如 "00:05:00" - "23:50:00"),datetime.strptime() 默认解析为同一天,结果可能为负。此时应考虑使用 pd.to_timedelta()(更健壮)或构造带日期的 datetime;
  • 对于整列处理,推荐用 pandas 原生方法提升效率:
# 更高效:批量转换整列为 timedelta
df['time_col'] = pd.to_timedelta(df.iloc[:, 2])  # 自动识别 HH:MM:SS 格式
diff_series = df['time_col'].diff().dropna()  # 相邻行时间差

? 总结:时间运算必须基于语义化的时间类型(timedelta / datetime),而非原始字符串或强制数值转换。优先使用 pd.to_timedelta() 处理 CSV 中的时间列,兼顾简洁性、可读性与性能;仅在特殊场景(如需结合日期)才调用 datetime.strptime()。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>