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

如何将Redshift查询返回的Generator转换为Pandas DataFrame?

将Redshift查询生成器转换为Pandas DataFrame

直接解决方案

wr.redshift.read_sql_query指定chunksize后返回的生成器,每个迭代元素本身就是包含完整字段的Pandas DataFrame分片,只需遍历生成器并拼接所有分片即可:

import awswrangler as wr
import pandas as pd

iterator = wr.redshift.read_sql_query(
    sql="my_query_here",
    con=conn,
    chunksize=1000
)

# 拼接所有DataFrame分片,保留字段结构
df = pd.concat(iterator, ignore_index=True)

为什么之前的方法报错

你参考的方案是针对产出单行数据的普通生成器,但这里的生成器每次产出的是完整的DataFrame块,直接套用该方法会把DataFrame当成单行数据处理,从而触发b'\x00'这类数据结构不匹配的错误。

内存友好的替代处理

如果数据集过大、内存有限,可以在遍历过程中逐步处理分片,避免一次性拼接占满内存:

processed_chunks = []
for chunk in iterator:
    # 示例:对分片做预处理(如清洗空值、筛选数据)
    cleaned_chunk = chunk.dropna(subset=["必填字段"])
    processed_chunks.append(cleaned_chunk)

# 最终拼接处理后的分片
df = pd.concat(processed_chunks, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:54:57