在读取csv或tsv文件之前在Pandas DataFrame列上应用条件

时间:2016-09-06 14:04:26

标签: python pandas dataframe conditional-statements

是否可以在读取csv或tsv文件之前为DataFrame列设置条件(过滤器),如果我已经知道列名称和类型?如果是,怎么样?

例如:考虑在一个非常大的文件中有两个数字列(col1和col2)。我不想在内存中加载整个文件,只选择col1大于col2的那些行。因此,首先,我想在数据帧上设置条件,它应该只读取csv文件中col1大于col2的那些行。我希望我的解释有意义。

谢谢

1 个答案:

答案 0 :(得分:4)

您可以使用blaze作为pandas旁边的便捷工具。

让我们假设一个输入文件:

a,b
1,2
3,4
5,3
3,6
6,1

然后我们打开文件并查询数据 - 请注意,在您尝试实现/访问数据之前,查询不会被执行:

import blaze
import pandas as pd

csv_data = blaze.Data('input.csv')
query = csv_data[csv_data['a'] > csv_data['b']]
df = pd.DataFrame.from_records(query, columns=query.fields)

然后将df作为:

   a  b
0  5  3
1  6  1