从CSV文件中删除具有特定值的所有行

时间:2018-11-05 05:34:28

标签: python csv data-cleaning

我正在处理一个问题,在该问题中,我以csv文件的形式拥有非常大的数据集。此csv文件具有多个列,其中之一是状态代码。数据集比我需要的要大得多-我只需要一个状态的值。

我正在考虑使用的解决方案是使用Python读取csv文件,然后仅用我需要的行写入新文件-删除50个州(美国)中的49个。

csv文件具有300万以上的行。我是Python的新手,我不确定如何有效地完成此任务,完成此任务的最佳方法是什么?

谢谢您的帮助,如果这看起来像是一个简单的问题,我深表歉意-我是Python的新手。

2 个答案:

答案 0 :(得分:2)

删除所有行与仅提取一个状态不同。从文件中删除行的处理足够here。假设您只想提取一个状态,这是您可以做到的一种方法。

with open("file.csv", "r") as file:
    for line in file:
        sline = line.split(",")
        if sline[n] == statecode:
            # Where n is the position of the statecode column zero indexed
            # and statecode is your target state code
            pass # this is where you do something with the data

使用这种模式,您可以实现几乎所有涉及逐行递增cv的解决方案。这包括写入新的csv,处理内存中的数据,pandasdask解决方案,等等。

如果您要这样做,您的系统很可能仅能直接导入到pandasdask。这些是带有内置read_csv方法的流行数据处理python工具。

答案 1 :(得分:1)

关于在Python中处理大量数据,最推荐的库之一是Pandas。它是一个Python库,专门用于数据分析,并能够使用DataFrame对象解析大量数据。