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

如何比较CSV两列日期并筛选列1日期早于列2的行

实现方案

一、命令行简便实现

推荐使用结构化文本处理工具Miller(mlr),无需自己处理CSV分隔符、时间拆分逻辑,一行命令即可完成:

  1. 先安装Miller:
    • Debian/Ubuntu:sudo apt install miller
    • macOS:brew install miller
    • Windows:可直接下载官方二进制包
  2. 执行筛选命令:
mlr --csv filter 'strptime($第一列,"%m/%d/%Y %I:%M:%S %p") < strptime($第二列,"%m/%d/%Y %I:%M:%S %p")' 输入文件.csv > 输出文件.csv

说明:如果你的CSV列名不是第一列、第二列,替换成实际列名即可。命令会自动保留表头,仅输出第一列时间早于第二列的行,完全匹配你的示例要求。


二、Python脚本实现

如果不想安装额外命令行工具,用Python实现也非常简单,无需手动拆分时间维度、处理AM/PM逻辑,自带的时间库会自动处理所有比较规则。

方案1:使用pandas(代码最简洁)

  1. 先安装依赖:pip install pandas
  2. 运行脚本:
import pandas as pd

# 读取原始CSV
df = pd.read_csv("你的输入文件.csv")
# 转换两列为标准时间类型,自动识别AM/PM
time_format = "%m/%d/%Y %I:%M:%S %p"
df["第一列"] = pd.to_datetime(df["第一列"], format=time_format)
df["第二列"] = pd.to_datetime(df["第二列"], format=time_format)
# 筛选符合条件的行
result_df = df[df["第一列"] < df["第二列"]]
# 导出结果
result_df.to_csv("你的输出文件.csv", index=False)

方案2:仅用Python标准库(无需安装第三方依赖)

import csv
from datetime import datetime

time_format = "%m/%d/%Y %I:%M:%S %p"
with open("你的输入文件.csv", "r", encoding="utf-8") as f_in, \
     open("你的输出文件.csv", "w", encoding="utf-8", newline="") as f_out:
    reader = csv.DictReader(f_in)
    writer = csv.DictWriter(f_out, fieldnames=reader.fieldnames)
    writer.writeheader()
    for row in reader:
        t1 = datetime.strptime(row["第一列"], time_format)
        t2 = datetime.strptime(row["第二列"], time_format)
        if t1 < t2:
            writer.writerow(row)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:45:03