python - pyspark withColumn 问题
问题描述
基本上,
输入 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|
#+---+---+---+---+---+---+---+---+---+
推荐阅读
- elasticsearch - Elasticsearch 可以通过 SAML 身份验证索引站点吗?
- javascript - 如何在 React/typescript 中访问嵌套 DOM 元素的文本值
- c - 关于指针在 C 中如何工作的问题
- c++ - c++ 无法将 std::filesystem::path 转换为 c_str
- c - 存根:是否可以使用与 __attribute__((weak)) 相反的东西?
- java - 如何从子类中访问父类中的内部类?
- javascript - 吊装不会导致打印,它会引发错误,为什么?
- typescript - 我可以以可重用的方式描述类方法的参数吗?
- google-cloud-platform - 是否可以在同一个文件存储实例上安装两个不同的文件夹?
- oracle - Oracle for Update SKIP LOCKED 和 Left Join