嗨,可爱的聪明人社区!
我正在尝试将 Redshift 表中的一些数据加载到 pandas DataFrame 中。我必须承认,我在大学时代并没有太多使用 Pandas,而且更像是一个麻木的人。
我已成功使用 awswrangler 将数据查询为块:
import awswrangler as wr
iterator = wr.redshift.read_sql_query(
sql="my_query_here",
con=conn
chunksize=1000
)
我可以获得这样的迭代器对象:
<generator object _iterate_results at 0x00000152583B78A0>
如何使用这个生成器来制作 DataFrame?查询本身还应该包括表中的列。
这可能真的很基本,但我想知道你是否知道该怎么做?也尝试过从 S3 存储桶中提取 csv 文件,但这对于权限来说似乎非常复杂,而且我不太擅长与权限相关的任何事情。
我也尝试过这个HOW - 将Python生成器转换为pandas数据框但不幸的是得到这个错误:
b'\x00'
如果使用
chunksize
参数,该函数将返回数据帧的迭代器。您可以轻松浏览它们:
for df in iterator:
print(df.head())
返回的
df
包含您的列和最多 chunksize
行。
请注意,如果您希望最终有一个包含所有数据的数据框,则应删除
chunksize
参数。如果您不小心,合并数据帧会显着增加内存消耗。