@@ -49,6 +49,15 @@ def _from_native_frame(self, df: Any) -> Self:
49
49
return self .__class__ (df , backend_version = self ._backend_version )
50
50
51
51
def with_columns (self , * exprs : DaskExpr , ** named_exprs : DaskExpr ) -> Self :
52
+ n_modifies_index = sum (
53
+ getattr (e , "_modifies_index" , 0 )
54
+ for e in list (exprs ) + list (named_exprs .values ())
55
+ )
56
+
57
+ if n_modifies_index > 0 :
58
+ msg = "Expressions that modify the index are not supported in `with_columns`."
59
+ raise ValueError (msg )
60
+
52
61
new_series = parse_exprs_and_named_exprs (self , * exprs , ** named_exprs )
53
62
return self ._from_native_frame (self ._native_frame .assign (** new_series ))
54
63
@@ -101,6 +110,14 @@ def select(
101
110
# This is a simple slice => fastpath!
102
111
return self ._from_native_frame (self ._native_frame .loc [:, exprs ])
103
112
113
+ n_modifies_index = sum (
114
+ getattr (e , "_modifies_index" , 0 )
115
+ for e in list (exprs ) + list (named_exprs .values ())
116
+ )
117
+ if n_modifies_index > 1 :
118
+ msg = "Found multiple expressions that modify the index"
119
+ raise ValueError (msg )
120
+
104
121
new_series = parse_exprs_and_named_exprs (self , * exprs , ** named_exprs )
105
122
106
123
if not new_series :
0 commit comments