如何在Pyspark中计算模数?

15

我刚接触Spark,希望在Pyspark中计算整数取模的额外列。但我没有找到内置运算符中有此运算符。

有人有任何想法吗?

1个回答

23

您可以像在普通的Python中一样,在列之间简单地使用%运算符:

from pyspark.sql.functions import col

df = spark.createDataFrame([(6,3), (7, 3), (13,6), (5, 0)], ["x", "y"])
df.withColumn("mod", col("x") % col("y")).show()

#+---+---+----+
#|  x|  y| mod|
#+---+---+----+
#|  6|  3|   0|
#|  7|  3|   1|
#| 13|  6|   1|
#|  5|  0|null|
#+---+---+----+

或者,您可以使用Spark内置函数mod%运算符与SQL语法:

from pyspark.sql.functions import expr

# using mod function
df.withColumn("mod", expr("mod(x, y)")).show()

# using SQL %
df.withColumn("mod", expr("x % y")).show()

1
警告其他用户,pyspark中的模数运算可能会返回负结果;这与SQL的行为相同,但不同于数学定义和Python的行为。请参见:https://dev59.com/Nmkv5IYBdhLWcg3wnCHH - mimocha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接