如何在非流式模式下从Polars LazyFrame移除include_file_paths列
解决Polars非流式模式下
file_path列无法移除的问题 问题根源
Polars在非流式模式下,scan_csv的include_file_paths参数是在查询执行的最后一步才把file_path列插入结果的。而你调用的drop("file_path")是在逻辑查询计划阶段执行的——这时候计划里根本还没这个列,所以drop操作相当于没起作用,最终结果自然还带着它。而流式模式的执行流程不一样,drop能正确作用到已添加的列上,所以能成功移除。
可行解决方案
方案1:collect之后再drop
既然非流式下file_path是collect阶段才加上的,那先把数据捞成DataFrame,再删列就行:
print(lf.collect().drop("file_path"))
方案2:手动添加file_path列
不用include_file_paths参数,自己用with_columns加列,这样逻辑计划里会明确有这个列,drop操作就能生效:
lf = pl.scan_csv(f.name).with_columns(pl.lit(f.name).alias("file_path")) print(lf.drop("file_path").collect())
方案3:直接指定要保留的列
绕开drop操作,直接select你需要的列:
print(lf.select("a", "b", "c").collect())
内容的提问来源于stack exchange,提问作者Muhammad D Vikar
相关产品推荐
相关产品推荐

