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

Pandas:如何从CSV或Excel文件读取指定行?

我完全懂你这种不想加载整个大DataFrame的痛点——毕竟大文件加载不仅费内存,还慢得让人着急。针对直接从CSV/Excel文件提取特定行到小DataFrame的需求,这里有几个实用的方法,分场景给你说说:

处理CSV文件的方法
  • 指定行号提取:用pandas的read_csv配合skiprows和nrows参数就能精准提取目标行。比如你要提取第5到第15行(假设表头是第1行),可以这么写:
import pandas as pd
# skiprows跳过前4行数据(行号从1开始算),nrows取11行(5到15共11行)
df = pd.read_csv('large_file.csv', skiprows=range(1,5), nrows=11)

如果要提取不连续的行,比如表头+第3、7、12行,用自定义函数过滤行号:

df = pd.read_csv('large_file.csv', skiprows=lambda x: x not in [0,3,7,12])
# 这里0是表头行,3、7、12是要保留的数据行号(从0开始计数)
  • 按条件筛选后提取:如果不知道具体行号,但知道筛选规则,用chunksize分块读取文件,只保留符合条件的行,避免加载整个文件:
import pandas as pd
chunk_size = 1000  # 每次读1000行,可根据内存调整
filtered_rows = []

for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
    # 替换成你的筛选条件,比如某列等于特定值
    filtered_chunk = chunk[chunk['target_column'] == 'desired_value']
    filtered_rows.append(filtered_chunk)

# 把筛选后的小块拼接成小DataFrame
small_df = pd.concat(filtered_rows, ignore_index=True)
处理Excel文件的方法

Excel文件的处理要注意格式(.xls/.xlsx),推荐用只读模式来提升效率:

  • 用openpyxl直接读取特定行(适合.xlsx):如果不想依赖pandas的全表读取,用openpyxl的只读模式可以直接定位行,再转成DataFrame:
from openpyxl import load_workbook
import pandas as pd

# 只读模式加载,避免占用过多内存
wb = load_workbook('large_file.xlsx', read_only=True)
ws = wb.active

# 提取第1行(表头)到第15行的数据
rows = []
for row in ws.iter_rows(min_row=1, max_row=15, values_only=True):
    rows.append(row)

# 转成DataFrame,rows[0]是表头,rows[1:]是数据
df = pd.DataFrame(rows[1:], columns=rows[0])
wb.close()
  • pandas的read_excel参数适配:和CSV逻辑类似,用skiprows和nrows直接提取,注意指定对应引擎:
import pandas as pd
# 针对.xlsx用openpyxl引擎,.xls用xlrd引擎
df = pd.read_excel('large_file.xlsx', engine='openpyxl', skiprows=range(1,5), nrows=11)

关于你提到的转置/透视方案:确实会遇到Excel的列数限制(Excel最多支持16384列),如果原文件行数超过这个数,转置后肯定会触发报错,所以直接提取目标行的方案才是更稳妥的选择。

内容的提问来源于stack exchange,提问作者A. Bernard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:11:54