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

如何更简便地对CSV中ISO8601格式日期执行操作?

简化CSV中ISO8601日期的运算操作

你当前的写法绕了弯路——pandas的datetime类型本身就支持直接做加减运算,完全不需要手动拆分年月日再构造date对象。下面是简化后的实现:

基础优化:直接读取并运算完整时间

读取CSV时直接指定解析日期列,省去单独转换的步骤,然后直接对datetime值做减法:

import pandas as pd

# 读取时自动解析time列为datetime类型
df = pd.read_csv('earthquake_data.csv', parse_dates=['time'])

# 直接取首尾行的时间做差值,保留完整时分秒精度
time_diff = df['time'].iloc[0] - df['time'].iloc[-1]
print(time_diff)
# 输出示例:0 days 00:26:09.716000

仅保留日期部分运算

如果只需要按天计算差值(忽略时分秒),可以用.dt.date提取日期后再运算:

# 提取日期部分并计算差值
date_diff = df['time'].dt.date.iloc[0] - df['time'].dt.date.iloc[-1]
print(date_diff)
# 输出示例:0 days

常用扩展场景

除了首尾行差值,日常还会用到这些日期运算:

  • 计算每行与基准日期的时间差:
    # 以第一行时间为基准,新增列存储每行的时间差
    df['time_since_first'] = df['time'] - df['time'].iloc[0]
    
  • 日期的增减操作:
    # 给所有时间加3天
    df['time_plus_3d'] = df['time'] + pd.Timedelta(days=3)
    # 给所有时间减12小时
    df['time_minus_12h'] = df['time'] - pd.Timedelta(hours=12)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:10:30