通过比较旧颜色的值创建新颜色



输入数据框:

<表类> 项目 L W H tbody><<tr>I1358I2212I3691预告734

我建议创建一个数组(array),排序(array_sort)并逐个选择元素(element_at)。

from pyspark.sql import functions as F
df = spark.createDataFrame(
[('I1', 3, 5, 8),
('I2', 2, 1, 2),
('I3', 6, 9, 1),
('I4', 7, 3, 4)],
['Item', 'L', 'W', 'H']
)
arr = F.array_sort(F.array('L', 'W', 'H'))
df = df.select(
'*',
F.element_at(arr, 3).alias('L_n'),
F.element_at(arr, 2).alias('W_n'),
F.element_at(arr, 1).alias('H_n'),
)
df.show()
# +----+---+---+---+---+---+---+
# |Item|  L|  W|  H|L_n|W_n|H_n|
# +----+---+---+---+---+---+---+
# |  I1|  3|  5|  8|  8|  5|  3|
# |  I2|  2|  1|  2|  2|  2|  1|
# |  I3|  6|  9|  1|  9|  6|  1|
# |  I4|  7|  3|  4|  7|  4|  3|
# +----+---+---+---+---+---+---+