是否可以在读取csv或tsv文件之前为DataFrame列设置条件(过滤器),如果我已经知道列名称和类型?如果是,怎么样?
例如:考虑在一个非常大的文件中有两个数字列(col1和col2)。我不想在内存中加载整个文件,只选择col1大于col2的那些行。因此,首先,我想在数据帧上设置条件,它应该只读取csv文件中col1大于col2的那些行。我希望我的解释有意义。
谢谢
答案 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