【问题标题】:Filter CSV File with Pandas/Python使用 Pandas/Python 过滤 CSV 文件
【发布时间】:2026-01-27 06:25:02
【问题描述】:

我有一个 CSV 文件,我想过滤它,只保留行“d”中的值大于 0 的行。

文件:

  index  value    d
0    975  25.35   5
1    976  26.28   4
2    977  26.24   1
3    978  25.76   0
4    979  26.08   0

我用 pandas 来做到这一点,但没有成功:

df = pd.read_csv("ThisFileL.csv")
df = df[(df["d"]>0)]

我也使用了其他方法,但是处理600mb的文件太长了。

with open("ThisFileL.csv", 'rb') as source:
    writer = csv.writer(source)
    for line in source:
        if line.d > 0 :
              writer.writerow(headers)

【问题讨论】:

  • 您的代码应该可以运行,您使用的是什么版本的 Pandas?
  • 请注意,您的代码将修改数据框,但不会修改 csv 文件。如果要将过滤后的数据保存到文件中,需要调用df.to_csv('filtered.csv')

标签: python csv pandas


【解决方案1】:

抱歉,没有 pandas 解决方案,但这是基本 Unix 工具无法击败的任务。如果你使用 Windows,你可以用 Cygwin 做同样的事情:

$ awk '{if ($4 > 0) print $0}' t.csv 
  0    975  25.35   5
  1    976  26.28   4
  2    977  26.24   1

您可以按照您想要的方式过滤数据,将其保存到另一个文件,然后使用 pandas 读入:

$ awk '{if ($4 > 0) print $0}' t.csv >filtered.csv

【讨论】:

  • 这真的很酷;我建议将其扩展到 ($4 > 0 || NR == 1) 以保留标题行;
  • 我碰巧有一个 9 GB 的 csv 文件,我需要根据其中一个列的值(数值)对其进行过滤。你觉得awk这里也比pandas快吗?