File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ use datafusion::datasource::TableProvider;
3535use datafusion:: error:: DataFusionError ;
3636use datafusion:: execution:: SendableRecordBatchStream ;
3737use datafusion:: parquet:: basic:: { BrotliLevel , Compression , GzipLevel , ZstdLevel } ;
38+ use crate :: datafusion_expr:: Expr ;
3839use datafusion:: prelude:: * ;
3940use datafusion_ffi:: table_provider:: FFI_TableProvider ;
4041use futures:: { StreamExt , TryStreamExt } ;
@@ -473,7 +474,19 @@ impl PyDataFrame {
473474 }
474475
475476 fn with_column ( & self , name : & str , expr : PyExpr ) -> PyDataFusionResult < Self > {
476- let df = self . df . as_ref ( ) . clone ( ) . with_column ( name, expr. into ( ) ) ?;
477+ let expr: Expr = expr. into ( ) ;
478+ let aliased = expr. alias ( name) ;
479+
480+ let df_schema = self . df . as_ref ( ) . schema ( ) . clone ( ) ;
481+ let mut proj_exprs: Vec < Expr > = df_schema
482+ . fields ( )
483+ . iter ( )
484+ . filter ( |field| field. name ( ) != name)
485+ . map ( |field| col ( field. name ( ) ) )
486+ . collect ( ) ;
487+ proj_exprs. push ( aliased) ;
488+
489+ let df = self . df . as_ref ( ) . clone ( ) . select ( proj_exprs) ?;
477490 Ok ( Self :: new ( df) )
478491 }
479492
You can’t perform that action at this time.
0 commit comments