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

使用Python自动修正CSV文件中的出发日期问题

当然可以用Python自动修正!给新手的一步步指南

完全没问题,这不仅能实现,还是个非常适合Python新手的入门练习,我会把每一步讲得清清楚楚,你跟着做就行。

先理清楚核心逻辑

咱们要解决的问题很明确:当Departure_Time早于Arrival_Time时,Departure_Date需要加一天(比如到达是2017/01/01 23:30,出发是00:30,说明出发是第二天的00:30,所以日期要改成2017/01/02)。

需要用到的Python工具(都是内置的,不用额外安装!)

  • csv模块:专门用来读写CSV文件,Python自带,不用pip安装
  • datetime模块:用来处理日期和时间,能轻松把字符串转成可计算的日期对象,还能实现加一天的操作

具体代码实现(带详细注释)

先把你的示例数据存成一个小的测试CSV文件(比如叫test_data.csv),然后运行下面的代码,先验证效果,没问题再处理3000行的大文件。

# 导入需要的模块
import csv
from datetime import datetime, timedelta

# 处理CSV文件的核心代码
# 用with语句打开文件,会自动关闭,避免忘记关文件的问题
with open('test_data.csv', 'r', newline='', encoding='utf-8') as input_file, \
     open('corrected_data.csv', 'w', newline='', encoding='utf-8') as output_file:
    
    # 创建CSV读取器和写入器
    # 注意:你的数据是用空格分隔的,所以delimiter=' ';如果实际是逗号分隔,改成delimiter=','
    csv_reader = csv.reader(input_file, delimiter=' ')
    csv_writer = csv.writer(output_file, delimiter=' ')
    
    # 先读取表头(第一行),直接写入新文件
    header = next(csv_reader)
    csv_writer.writerow(header)
    
    # 遍历每一行数据
    for row in csv_reader:
        # 提取四个字段:到达日期、到达时间、出发日期、出发时间
        arr_date, arr_time, dep_date, dep_time = row
        
        # 把日期+时间的字符串转换成datetime对象(方便比较和计算)
        # "%Y/%m/%d %H:%M"是你的日期时间格式,要和数据里的格式对应
        arrival_datetime = datetime.strptime(f"{arr_date} {arr_time}", "%Y/%m/%d %H:%M")
        departure_datetime = datetime.strptime(f"{dep_date} {dep_time}", "%Y/%m/%d %H:%M")
        
        # 判断:如果出发时间早于到达时间,说明是第二天,给出发日期加一天
        if departure_datetime < arrival_datetime:
            # 用timedelta(days=1)实现加一天
            corrected_departure = departure_datetime + timedelta(days=1)
            # 把修正后的datetime对象转成原来格式的字符串
            corrected_dep_date = corrected_departure.strftime("%Y/%m/%d")
            corrected_dep_time = corrected_departure.strftime("%H:%M")
        else:
            # 不需要修正的话,直接用原来的字段
            corrected_dep_date = dep_date
            corrected_dep_time = dep_time
        
        # 组装修正后的行,写入新文件
        corrected_row = [arr_date, arr_time, corrected_dep_date, corrected_dep_time]
        csv_writer.writerow(corrected_row)

# 处理完成后提示
print("数据修正完成!修正后的文件是corrected_data.csv")

给新手的入门学习方向

如果你完全是Python新手,可以按照这个顺序慢慢学:

  1. Python基础语法:先掌握变量、循环(for/while)、条件判断(if-else)这些最基本的内容,能看懂代码里的逻辑
  2. CSV文件操作:跟着官方文档或者简单教程,学会用csv模块读写文件,理解什么是reader和writer
  3. 日期时间处理:重点学datetime模块的strptime(转成日期对象)、strftime(转成字符串)和timedelta(时间计算),这是处理时间类问题的核心
  4. 小步测试:处理大文件前,先用几行测试数据跑代码,确认没问题再处理3000行的文件,避免出错
  5. 注意细节:比如文件路径(如果CSV文件和代码不在同一个文件夹,要写完整路径)、数据分隔符(是空格还是逗号,要和实际文件一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:08:34