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

如何用Python筛选两个CSV文件中time列值相同的行

嘿,这个需求很常见,给你几个不同场景下的解决方案,挑你顺手的用就行:

方法一:用Python Pandas处理(适合数据量较大或需要后续拓展处理的场景)

Pandas是Python里专门做数据处理的库,代码直观易懂,还能应对更复杂的需求:

import pandas as pd

# 读取两个CSV文件,注意这里的分隔符是空格,如果你是逗号分隔就改成sep=','
df_a = pd.read_csv('a.csv', sep=' ')
df_b = pd.read_csv('b.csv', sep=' ')

# 找出两个文件time列的共同值
common_time_values = pd.merge(df_a[['time']], df_b[['time']], on='time')['time']

# 从b.csv里筛选出time在共同值里的行
result_df = df_b[df_b['time'].isin(common_time_values)]

# 保存结果到c.csv,不要自动加索引列
result_df.to_csv('c.csv', sep=' ', index=False)

小提示:如果你的CSV文件列名有问题,或者读取时识别错了分隔符,可以手动指定列名和分隔符,比如:

df_a = pd.read_csv('a.csv', sep=' ', names=['time', 'x', 'y'])

方法二:用awk命令行快速处理(适合Linux/macOS用户,无需写脚本)

如果你不想写代码,用系统自带的awk工具就能一键搞定,速度还快:

awk 'NR==FNR {times[$1]=1; next} $1 in times' a.csv b.csv > c.csv

解释一下这个命令:

  • 先读a.csv,把所有time值存到一个数组里
  • 再读b.csv,只要当前行的time在刚才的数组里,就把这行打印出来
  • 最后把结果直接输出到c.csv

如果你的CSV是逗号分隔的,只要加个分隔符参数就行:

awk -F',' 'NR==FNR {times[$1]=1; next} $1 in times' a.csv b.csv > c.csv

方法三:用Excel可视化操作(适合不熟悉代码的用户)

如果你更习惯用Excel,也能一步步实现:

  1. 把a.csv和b.csv都导入同一个Excel文件的不同工作表(比如Sheet1放a的数据,Sheet2放b的数据)
  2. 在Sheet2的空白列(比如D列)第一行输入公式:=COUNTIF(Sheet1!A:A, A2),然后下拉填充整列
  3. 筛选D列值大于0的行(这就代表对应的time在a.csv里存在)
  4. 复制筛选后的所有行,粘贴到新的工作表,再另存为c.csv就搞定了

注意事项

  • 一定要保证两个文件的time列格式完全一致,比如日期时间的写法、空格/符号都不能差,否则会匹配失败
  • 如果你的CSV里有表头(像示例里的time x y),上面的方法都能自动识别表头,不需要额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:27