如何过滤Pandas read_csv函数中的行?

我如何过滤使用pandas将CSV加载到内存中的哪一行? 这似乎是一个应该在read_csvfind的read_csv 。 我错过了什么吗?

例如:我们有一个带有时间戳列的CSV,我们只想加载时间戳大于给定常量的行。

在将CSV文件加载到pandas物件之前,没有select过滤行。

您可以加载文件,然后使用df[df['field'] > constant]进行筛选,或者如果您有一个非常大的文件,并且担心内存不足,则使用迭代器并在连接时应用筛选器你的文件大块例如:

 iter_csv = pandas.read_csv('file.csv', iterator=True, chunksize=1000) df = pd.concat([chunk[chunk['field'] > constant] for chunk in iter_csv]) 

您可以改变块大小以适应您的可用内存。 在这里看到更多的细节。

我没有find一个简单的方法在read_csv上下文中做到这read_csv 。 但是, read_csv返回一个DataFrame,它可以通过布尔向量df[bool_vec]select行来过滤:

 filtered = df[(df['timestamp'] > targettime)] 

这是selectdf中的所有行(假设df是任何DataFrame,例如read_csv调用的结果,至less包含datetime列timestamp ), timestamp列中的值大于targettime的值。 类似的问题 。