如何更简便地对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
相关产品推荐
相关产品推荐

