我有一个这样的 Dataframe
data_df = spark.createDataFrame([([1,2,3],'val1'),([4,5,6],'val2')],['col1','col2'])
Col1. Col2
[1,2,3] val1
[4,5,6] val2
我想从列1数组中获取最小值。预期结果如下所示:
Col1
1
4
我实现了以下Pandas UDF,但我得到了错误:
**
从UDF引发异常:'Assert错误:Pandas SCALAR_ITER UDF输出的行比输入行多。
**
我不知道哪里错了?
def generate_min(batch_iter: Iterator[pd.Series]) -> Iterator[pd.Series]:
for x in batch_iter:
yield min(x)
generate__udf = pandas_udf(generate_min, returnType=IntegerType())
data_df.select(generate_min(F.col('col1'))
1条答案
按热度按时间b91juud31#
您的数据框(data_df):
使用
array_min()
pyspark内置函数从数组列中获取最小元素。输出