HyukjinKwon commented on code in PR #37335:
URL: https://github.com/apache/spark/pull/37335#discussion_r933040782
##########
python/pyspark/sql/dataframe.py:
##########
@@ -3244,10 +3244,14 @@ def drop(self, *cols: "ColumnOrName") -> "DataFrame":
# type: ignore[misc]
else:
raise TypeError("col should be a string or a Column")
else:
- for col in cols:
- if not isinstance(col, str):
- raise TypeError("each col in the param list should be a
string")
- jdf = self._jdf.drop(self._jseq(cols))
+ if all(isinstance(col, str) for col in cols):
+ jdf = self._jdf.drop(self._jseq(cols))
+ elif all(isinstance(col, Column) for col in cols):
+ jdf = self._jdf
+ for col in cols:
+ jdf = jdf.drop(col._jc) # type: ignore[union-attr]
Review Comment:
> pyspark it doesn't work as `def drop(colNames: String*)` gets precedence.
`self._jdf.drop(self._jseq(cols, _to_java_column))` will always pick up `def
drop(cols: String*)` at runtime and lead to an error.
Can you call `def drop(col: Column, cols: Column*).` is the input is column
instance?
##########
python/pyspark/sql/dataframe.py:
##########
@@ -3244,10 +3244,14 @@ def drop(self, *cols: "ColumnOrName") -> "DataFrame":
# type: ignore[misc]
else:
raise TypeError("col should be a string or a Column")
else:
- for col in cols:
- if not isinstance(col, str):
- raise TypeError("each col in the param list should be a
string")
- jdf = self._jdf.drop(self._jseq(cols))
+ if all(isinstance(col, str) for col in cols):
+ jdf = self._jdf.drop(self._jseq(cols))
+ elif all(isinstance(col, Column) for col in cols):
+ jdf = self._jdf
+ for col in cols:
+ jdf = jdf.drop(col._jc) # type: ignore[union-attr]
Review Comment:
> pyspark it doesn't work as `def drop(colNames: String*)` gets precedence.
`self._jdf.drop(self._jseq(cols, _to_java_column))` will always pick up `def
drop(cols: String*)` at runtime and lead to an error.
Can you call `def drop(col: Column, cols: Column*).` if the input is column
instance?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]