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

如何用Python对CSV文件同一列应用双条件筛选获取多列数据

嘿,这个需求太常见啦!不管你是用Python写脚本还是想直接用命令行搞定,我都给你整理了靠谱的解决方案,一起来看看~

方案1:用Python Pandas实现(最常用的编程方式)

Pandas是处理CSV数据的神器,几步就能搞定日期范围筛选:

  1. 先导入Pandas并读取CSV文件:
import pandas as pd

# 替换成你的CSV文件路径
df = pd.read_csv('your_data.csv')
  1. 关键步骤:把date列转换成日期类型
    很多时候CSV里的日期是字符串格式,直接比较会出问题,所以先转成datetime:
# 如果你的日期格式是标准的YYYY-MM-DD,直接用这个就行
df['date'] = pd.to_datetime(df['date'])

# 如果是其他格式(比如DD/MM/YYYY),记得加format参数
# df['date'] = pd.to_datetime(df['date'], format='%d/%m/%Y')
  1. 定义日期变量并筛选数据
    把你的sdate和edate变量设好,然后用逻辑条件筛选:
# 替换成你实际的起始/结束日期
sdate = '2023-01-01'
edate = '2023-12-31'

# 筛选date介于sdate和edate之间的所有行,保留三列数据
filtered_data = df[(df['date'] >= sdate) & (df['date'] <= edate)]

# 要是想把结果导出成新的CSV,就用下面这行
filtered_data.to_csv('filtered_result.csv', index=False)

小提示:这里一定要用&而不是and,因为我们是对整个数据列(Series)做逻辑判断,and只适用于单个布尔值哦!

方案2:用命令行工具csvkit(不用写代码)

如果你不想写Python脚本,用csvkit的命令行工具也能快速搞定:

首先得先安装csvkit:

pip install csvkit

然后用csvsql执行SQL查询,直接筛选日期范围:

# 先定义你的日期变量(shell环境下)
sdate='2023-01-01'
edate='2023-12-31'

# 执行SQL查询,筛选出符合条件的三列数据,导出到新CSV
csvsql --query "SELECT date, value, product FROM your_data WHERE date BETWEEN '$sdate' AND '$edate'" your_data.csv > filtered_result.csv

小提示:如果你的日期格式不是标准格式,比如DD/MM/YYYY,可以在SQL里用STR_TO_DATE转换:

csvsql --query "SELECT date, value, product FROM your_data WHERE STR_TO_DATE(date, '%d/%m/%Y') BETWEEN '$sdate' AND '$edate'" your_data.csv > filtered_result.csv
注意事项
  • 不管用哪种方法,一定要保证sdate、edate的格式和CSV里date列的格式匹配,不然筛选会失效
  • 如果CSV里的日期包含时间(比如2023-01-01 14:30:00),Pandas和SQL都会自动处理时间部分的比较,不用额外操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:00:23