Python实现CSV日期时间列拆分、偏移及间隔批量计算
Python处理ISO时区时间CSV方案
使用pandas实现所有处理逻辑,内置的时间解析、偏移、差值计算能力可以自动处理跨天进位、时区适配问题,无需手动编写日期判断逻辑,千条级数据处理无性能压力。
前置依赖
- 执行以下命令安装需要的库:
pip install pandas
完整实现代码
import pandas as pd # 按需修改文件路径 INPUT_FILE = "your_source_data.csv" OUTPUT_FILE = "processed_result.csv" # 配置时间偏移量:5小时30分 OFFSET = pd.Timedelta(hours=5, minutes=30) # 读取数据并解析ISO格式带时区时间 df = pd.read_csv(INPUT_FILE) df["parsed_time"] = pd.to_datetime(df["Date_and_Time"], format="ISO8601") # 生成要求的各列 df["Date and Time"] = df["Date_and_Time"] df["Old Date"] = df["parsed_time"].dt.strftime("%Y-%m-%d") df["Old Time"] = df["parsed_time"].dt.strftime("%H:%M:%S") # 计算偏移后时间,自动处理跨天/跨月/跨年的日期切换 df["offset_time"] = df["parsed_time"] + OFFSET df["New Date"] = df["offset_time"].dt.strftime("%Y-%m-%d") # macOS/Linux用%-H实现小时无前置零,Windows系统请替换为%#H df["New Time"] = df["offset_time"].dt.strftime("%-H:%M:%S") # 计算相邻记录时间间隔,首行填充NA df["Time Gap"] = df["parsed_time"].diff().dt.total_seconds() / 3600 df["Time Gap"] = df["Time Gap"].fillna("NA").astype(str).str.replace(r"\.0$", "", regex=True) # 导出结果,丢弃中间辅助列 target_columns = ["Date and Time", "Old Date", "Old Time", "New Date", "New Time", "Time Gap"] df[target_columns].to_csv(OUTPUT_FILE, index=False)
使用说明
- 将代码中
INPUT_FILE的值替换为你本地原始CSV的路径,OUTPUT_FILE替换为想要保存结果的路径 - Windows系统运行时,将
New Time生成逻辑里的%-H改为%#H,否则小时位会出现多余前导零,和样例格式不一致 - 所有日期偏移的进位逻辑由pandas自动处理,遇到23点加5小时30分这类跨天场景会自动切换到下一日日期
- 时间间隔计算基于原始时间戳做差,结果自动去掉无意义的
.0后缀,和样例输出格式完全匹配
内容的提问来源于stack exchange,提问作者ankur .k
相关产品推荐
相关产品推荐

