我是PySpark的新手,我正在尝试创建一个通用的.when()
函数,它可以接受任意数量的when-子句,而不必在函数中列出它们。
我们希望从某种数据结构中驱动它,因此可以概括形式的一个函数:
(
df.when(
df.value == 1, 'one'
).when(
df.value == 2, 'two'
).when(
df.N == N, 'N'
)
)
变成类似这样的东西:
(
df.when(
**when_clauses
)
)
我怀疑我将不得不使用**kwargs
来允许这种行为的发生,但我不确定Spark是否已经支持这种行为。
发布于 2020-11-06 12:49:43
您可能正在寻找df.replace
。它会就地替换,所以如果您想保留原始列,可以使用df.withColumn('value2', 'value')
复制它。
mapping = {1: 'one', 2: 'two', ...}
df.replace(mapping)
https://stackoverflow.com/questions/64714897
复制相似问题