我有一个看起来像这样的数据框
Swift 3:
let sortedNameAry = nameStrAry.sort { $0.nameStr < $1.nameStr }
For Swift 4 you can use only this
let sortedNameAry = nameStrAry.sorted(by: <)
我想聚合数据帧并返回import pandas as pd
df = pd.DataFrame({'hist': [[1, 2, 3], [0, 1, 0], [1, 0, 0]]})
df = spark.createDataFrame(df)
的逐元素求和。我除外的结果是hist
。
我试图这样做
[2, 3, 3]
但是我遇到了这个错误
from pyspark.sql.types import ArrayType, IntegerType
from pyspark.sql import functions as F
df.agg(F.udf(lambda x: list(np.sum(x, axis=0).astype('int')), ArrayType(IntegerType()))(F.collect_list(df.hist))).show(10, False)
由于我将UDF的输出显式转换为列表类型,所以我不希望这样。
答案 0 :(得分:2)
我想,如果您需要的只是一个向量,该向量返回行总和,则可以轻松完成。
import pandas as pd
import pyspark.sql.functions as F
df = pd.DataFrame({'hist': [[1, 2, 3], [0, 1, 0], [1, 0, 0]]})
df = spark.createDataFrame(df)
import pyspark.sql.functions as F
sumOfRows = df.agg(F.array(*[F.sum(F.col("hist")[i]) for i in range(n+1)]).alias("sum"))
sumOfRows.show()
输出:
+---------+
| sum|
+---------+
|[2, 3, 3]|
+---------+