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

Pandas分块读取CSV后拼接触发ValueError问题求助

错误原因与解决方案

错误原因

Pandas的read_csv返回的分块迭代器(TextFileReader)是一次性迭代对象。你第一次遍历它展示前5个chunk时,迭代器已经推进到第5个chunk的位置;当你第二次尝试遍历同一个df_reader时,迭代器已经没有剩余数据可读取,导致df_list为空,调用pd.concat()自然抛出ValueError: No objects to concatenate。

解决方案

方案1:重新创建分块迭代器

直接在拼接代码前重新生成新的迭代器,避免复用已耗尽的对象:

from IPython.display import display
import pandas as pd
path = 'data/diabetes.csv'

# 第一次遍历展示前5个chunk
df_reader = pd.read_csv(path, chunksize=5)
for index, chunk in enumerate(df_reader):
    if index < 5:
        print(f'Chunk index: {index}')
        display(chunk)

# 重新创建迭代器用于拼接
df_reader = pd.read_csv(path, chunksize=5)
df_list = []
for chunk in df_reader:    
    df_list.append(chunk)

df = pd.concat(df_list)

方案2:一次遍历完成展示与收集

在同一次遍历中同时完成前5个chunk的展示和所有chunk的收集,避免多次迭代:

from IPython.display import display
import pandas as pd
path = 'data/diabetes.csv'

df_reader = pd.read_csv(path, chunksize=5)
df_list = []

for index, chunk in enumerate(df_reader):
    df_list.append(chunk)
    # 仅展示前5个chunk
    if index < 5:
        print(f'Chunk index: {index}')
        display(chunk)

df = pd.concat(df_list)

方案3:先收集所有chunk再操作

先把所有chunk一次性存入列表,之后按需展示和拼接:

from IPython.display import display
import pandas as pd
path = 'data/diabetes.csv'

df_reader = pd.read_csv(path, chunksize=5)
df_list = list(df_reader)  # 一次性读取所有chunk到列表

# 展示前5个chunk
for index, chunk in enumerate(df_list[:5]):
    print(f'Chunk index: {index}')
    display(chunk)

# 拼接所有数据
df = pd.concat(df_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:52:44