Python 无法使用column属性为pyspark dataframe中的列分配新值
我有一个pyspark数据帧Python 无法使用column属性为pyspark dataframe中的列分配新值,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我有一个pyspark数据帧event1。它有许多列,其中一列是eventAction,具有“转换”、“签出”等分类值 我想在eventAction列中将此列转换为1,其他类别转换为0 这就是我所尝试的: event1.eventAction = event1.select(F.when(F.col('eventAction') == 'conversion', 1).otherwise(0)) event1.show() 但是当执行.show()时,我看不到事件操作列中有任何更改。Spark
event1
。它有许多列,其中一列是eventAction
,具有“转换”、“签出”等分类值
我想在eventAction
列中将此列转换为1,其他类别转换为0
这就是我所尝试的:
event1.eventAction = event1.select(F.when(F.col('eventAction') == 'conversion', 1).otherwise(0))
event1.show()
但是当执行
.show()
时,我看不到事件操作列中有任何更改。Spark数据帧是不可变的,因此不能直接使用
表示法更改列。您需要使用withColumn
创建一个新的数据框来替换现有列
import pyspark.sql.functions as F
event1 = event1.withColumn(
'eventAction',
F.when(F.col('eventAction') == 'conversion', 1).otherwise(0)
)
这回答了你的问题吗?这一个:@Blackishop这些问题可能是相关的,但坦率地说,答案非常复杂/甚至与这个相对简单的问题无关。@Blackishop这个问题的不同之处在于它使用了一种稍微直观的方法,通过数据框的列属性更新列,但不知何故失败了,从而混淆了OP。这种用法虽然不正确,但以前从未被询问过,因此值得继续讨论。