如何从生成器流式传输到 polars 数据帧和后续的惰性计划?

问题描述 投票:0回答:0

我有一个很长的生成器函数,我想使用 Polars 将其处理为一个列。由于它的大小,我想使用生成器作为源以惰性流模式运行它,但我一直无法弄清楚如何去做(如果可能的话)。

创建一个普通的数据框然后转换为惰性数据框显然是行不通的,因为在懒惰计划运行之前生成器已经耗尽

collect()
。这也发生在 LazyFrame 初始化程序中,它只是上面的快捷方式。

有没有其他选项不涉及写入然后扫描 csv?

示例代码:

import polars as pl

def Generator():
    yield 1
    yield 2
    yield 3

generator = Generator()
df = pl.DataFrame({"a": generator}).lazy()

print(df)
# naive plan...

print([i for i in generator])
# []

generator2 = Generator()
df = pl.LazyFrame({"a": generator2})

print(df)
# naive plan...

print([i for i in generator2])
# []
python python-polars
© www.soinside.com 2019 - 2024. All rights reserved.