You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas读取feather文件时如何限制读取的行数?

解决Feather文件读取限制行数的方案

pandas 内置的 read_feather 确实没有提供类似 read_hdf 的 stop 参数,你可以通过以下两种方案实现需求:


方案1:使用pyarrow底层接口(轻量首选)

pandas 读写feather本身依赖pyarrow库,你可以直接调用pyarrow的FeatherReader接口,无需额外安装依赖:

单row group场景(绝大多数默认导出的feather都是该类型)

import pyarrow.feather as feather
import pandas as pd

# 仅加载元数据,不会读取全量文件内容
reader = feather.FeatherReader("df.ftr")
# 直接读取前100万行转成DataFrame
df = reader.read_row_group(0, limit=1000000).to_pandas()

多row group场景

如果你的feather文件是分多个行组存储的,可以按行组累计读取直到凑够目标行数:

import pyarrow.feather as feather
import pandas as pd

reader = feather.FeatherReader("df.ftr")
target_rows = 1000000
collected = 0
df_parts = []

for rg_idx in range(reader.num_row_groups):
    current_rg_rows = reader.get_row_group(rg_idx).num_rows
    if collected + current_rg_rows <= target_rows:
        # 读取整行组
        df_parts.append(reader.get_row_group(rg_idx).to_pandas())
        collected += current_rg_rows
    else:
        # 仅读取剩余需要的行数
        need_rows = target_rows - collected
        df_parts.append(reader.read_row_group(rg_idx, limit=need_rows).to_pandas())
        break

# 合并为完整DataFrame
df = pd.concat(df_parts, ignore_index=True)

方案2:使用Dask分批读取(适合大数据处理场景)

如果平时有大规模数据处理需求,可以用Dask框架实现,代码更简洁:

import dask.dataframe as dd

# Dask读取feather时仅生成计算逻辑,不会加载全量数据
ddf = dd.read_feather("df.ftr")
# 取前100万行转为pandas DataFrame
df = ddf.head(1000000, npartitions=-1)

注:该方案需要提前安装dask库,执行pip install dask即可。


内容的提问来源于stack exchange,提问作者Marioanzas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:15:04