ueshin commented on a change in pull request #35191:
URL: https://github.com/apache/spark/pull/35191#discussion_r824009010
##########
File path: python/pyspark/pandas/series.py
##########
@@ -5228,9 +5229,20 @@ def asof(self, where: Union[Any, List]) -> Union[Scalar,
"Series"]:
where = [where]
index_scol = self._internal.index_spark_columns[0]
index_type = self._internal.spark_type_for(index_scol)
+
+ if np.nan in where:
+ # When `where` is np.nan, pandas returns the last index value.
+ last_index =
self._internal.spark_frame.select(F.last(index_scol)).take(1)[0][0]
+ modified_where = [last_index if x is np.nan else x for x in where]
+ else:
+ modified_where = where
+
cond = [
- F.max(F.when(index_scol <= SF.lit(index).cast(index_type),
self.spark.column))
- for index in where
+ F.last(
Review comment:
Could you try
https://github.com/ueshin/apache-spark/commit/1b41024b91c9e8dca5d83c5c2793da85f2ba3946?
That is a bit different from what I first suggested, though.
It passes all the tests you added.
--
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]