如何使用python datatable的fread()加载csv文件的指定列子集
datatable fread 筛选指定列加载方案
你可以通过fread()的columns参数传字典实现仅加载目标列的需求,该参数支持同时完成列筛选和列重命名,未出现在字典里的列会被直接跳过不会加载,完全匹配pandasusecols参数的使用场景,具体用法如下:
按列名筛选(无需重命名)
如果仅需要筛选指定列、不需要修改列名,字典的键和值都写原列名即可:
import datatable as dt # 等价于pandas的 pd.read_csv("large_file.csv", usecols=["col1", "col3", "col5"]) df = dt.fread( "large_file.csv", columns={ "col1": "col1", "col3": "col3", "col5": "col5" } )
按列名筛选+重命名
如果需要同时修改目标列的名称,把字典值改为你需要的新列名即可:
df = dt.fread( "large_file.csv", columns={ "col1": "user_id", "col3": "user_age", "col5": "pay_amount" } )
按列索引筛选
如果不知道列名,要按列的位置筛选(列索引从0开始计数),把字典键改为对应列的索引即可:
# 仅加载第0、2、4列 df = dt.fread( "large_file.csv", columns={ 0: "col_0", 2: "col_2", 4: "col_4" } )
以上所有写法都不会加载未指定的列,非常适合超大CSV文件的轻量化读取,不会产生额外的内存开销。
内容的提问来源于stack exchange,提问作者Toby
相关产品推荐
相关产品推荐

