Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用column属性为pyspark dataframe中的列分配新值_Python_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Python 无法使用column属性为pyspark dataframe中的列分配新值

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

我有一个pyspark数据帧
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。这种用法虽然不正确,但以前从未被询问过,因此值得继续讨论。