【问题标题】:Skip specific rows with an "NaN" value while reading a csv file in python在 python 中读取 csv 文件时跳过具有“NaN”值的特定行
【发布时间】:2022-01-27 14:04:03
【问题描述】:

我有 csv,我从 windows 文件夹的查询中读取。

files = glob.glob(r"LBT210*.csv")
dfs = [pd.read_csv(f, sep=";", engine='c') for f in files]
df2 = pd.concat(dfs,ignore_index=True)

但是输出看起来像:

columnA columnB columnC
1         1        0
2         0        A
NaN       NaN      1
3         B        D
...

如何跳过阅读列 B 中包含“NaN”(无值)的行,以便节省一些内存并加快处理速度?所以我不想阅读这些行!我要调整:

dfs = [pd.read_csv(f, sep=";", engine='c') for f in files]不知何故

【问题讨论】:

标签: python pandas csv


【解决方案1】:

根据从这个问题here 中选择的答案,在文件被读入内存之前没有办法进行过滤。由于这是 10 多年前的事情,我还重新检查了 read_csv 选项,它看起来没有其他任何帮助。

在从另一个 stackoverflow 问题和选择的答案中得到启发后,您可以执行类似的操作来减少内存消耗。

iter_csv = pd.read_csv(f, sep=";", enine='c', iterator=True, chunksize=1000)
df = pd.concat([chunk[~chunk['columnB'].isna()] for chunk in iter_csv])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2021-10-30
    • 2014-01-26
    • 1970-01-01
    相关资源
    最近更新 更多