pyspark withColumn 问题
pyspark withColumn issue
基本上,
输入 Pyspark 数据框如下
a 1 2 3 4 5 6 7 8
1 9 0 9 0 0 0 0 0
2 0 9 9 0 0 0 0 0
3 0 0 9 0 0 0 0 0
4 0 0 9 9 0 0 0 0
5 0 0 9 0 9 0 0 0
6 0 0 9 0 0 9 0 0
7 0 0 9 0 0 0 9 0
8 0 0 9 0 0 0 0 9
我希望输出为
a 1 2 3 4 5 6 7 8
1 4 0 9 0 0 0 0 0
2 0 4 9 0 0 0 0 0
3 0 0 4 0 0 0 0 0
4 0 0 9 4 0 0 0 0
5 0 0 9 0 4 0 0 0
6 0 0 9 0 0 4 0 0
7 0 0 9 0 0 0 4 0
8 0 0 9 0 0 0 0 4
我做了一些研究,我需要使用 withColumn 和 replace 函数来完成我的任务。
我如何从列 a 中查询值并将该值用作列名以将 9 替换为 4
请提出解决方案
试试这个:
df.select("a", *(F.when(F.col("a")==F.lit(int(x)),F.lit(4)).otherwise(F.col(x)).alias(x)\
for x in df.columns if x!='a')).show()
#+---+---+---+---+---+---+---+---+---+
#| a| 1| 2| 3| 4| 5| 6| 7| 8|
#+---+---+---+---+---+---+---+---+---+
#| 1| 4| 0| 9| 0| 0| 0| 0| 0|
#| 2| 0| 4| 9| 0| 0| 0| 0| 0|
#| 3| 0| 0| 4| 0| 0| 0| 0| 0|
#| 4| 0| 0| 9| 4| 0| 0| 0| 0|
#| 5| 0| 0| 9| 0| 4| 0| 0| 0|
#| 6| 0| 0| 9| 0| 0| 4| 0| 0|
#| 7| 0| 0| 9| 0| 0| 0| 4| 0|
#| 8| 0| 0| 9| 0| 0| 0| 0| 4|
#+---+---+---+---+---+---+---+---+---+
基本上,
输入 Pyspark 数据框如下
a 1 2 3 4 5 6 7 8
1 9 0 9 0 0 0 0 0
2 0 9 9 0 0 0 0 0
3 0 0 9 0 0 0 0 0
4 0 0 9 9 0 0 0 0
5 0 0 9 0 9 0 0 0
6 0 0 9 0 0 9 0 0
7 0 0 9 0 0 0 9 0
8 0 0 9 0 0 0 0 9
我希望输出为
a 1 2 3 4 5 6 7 8
1 4 0 9 0 0 0 0 0
2 0 4 9 0 0 0 0 0
3 0 0 4 0 0 0 0 0
4 0 0 9 4 0 0 0 0
5 0 0 9 0 4 0 0 0
6 0 0 9 0 0 4 0 0
7 0 0 9 0 0 0 4 0
8 0 0 9 0 0 0 0 4
我做了一些研究,我需要使用 withColumn 和 replace 函数来完成我的任务。
我如何从列 a 中查询值并将该值用作列名以将 9 替换为 4
请提出解决方案
试试这个:
df.select("a", *(F.when(F.col("a")==F.lit(int(x)),F.lit(4)).otherwise(F.col(x)).alias(x)\
for x in df.columns if x!='a')).show()
#+---+---+---+---+---+---+---+---+---+
#| a| 1| 2| 3| 4| 5| 6| 7| 8|
#+---+---+---+---+---+---+---+---+---+
#| 1| 4| 0| 9| 0| 0| 0| 0| 0|
#| 2| 0| 4| 9| 0| 0| 0| 0| 0|
#| 3| 0| 0| 4| 0| 0| 0| 0| 0|
#| 4| 0| 0| 9| 4| 0| 0| 0| 0|
#| 5| 0| 0| 9| 0| 4| 0| 0| 0|
#| 6| 0| 0| 9| 0| 0| 4| 0| 0|
#| 7| 0| 0| 9| 0| 0| 0| 4| 0|
#| 8| 0| 0| 9| 0| 0| 0| 0| 4|
#+---+---+---+---+---+---+---+---+---+