当前位置: 首页 > 知识库问答 >
问题:

在spark中更新dataframe列

龙浩博
2023-03-14

看看新的spark dataframe api,不清楚是否可以修改dataframe列。

如何更改DataFrame的行XY中的值?

from pyspark.sql import functions as F

update_func = (F.when(F.col('update_col') == replace_val, new_value)
                .otherwise(F.col('update_col')))
df = df.withColumn('new_column_name', update_func)

如果要对列执行某些操作并创建添加到DataFrame的新列:

import pyspark.sql.functions as F
import pyspark.sql.types as T

def my_func(col):
    do stuff to column here
    return transformed_value

# if we assume that my_func returns a string
my_udf = F.UserDefinedFunction(my_func, T.StringType())

df = df.withColumn('new_column_name', my_udf('update_col'))

如果希望新列的名称与旧列相同,可以添加附加步骤:

df = df.drop('update_col').withColumnRenamed('new_column_name', 'update_col')

共有1个答案

彭嘉赐
2023-03-14

从pyspark.sql.functions导入col,并根据字符串(字符串a、字符串b、字符串c)将第五列更新为整数(0,1,2)到一个新的DataFrame中。

from pyspark.sql.functions import col, when 

data_frame_temp = data_frame.withColumn("col_5",when(col("col_5") == "string a", 0).when(col("col_5") == "string b", 1).otherwise(2))
 类似资料:
  • 现在,我想在一个函数中使用这个,如下所示- 然后使用此函数在我的DataFrame中创建一个新列 总之,我希望我的列“new_col”是一个类型数组,其值为[[x,x,x]] 我得到以下错误。我在这里做错了什么? 原因:java.lang.UnsupportedOperationException:不支持org.apache.spark.sql.Column类型的模式

  • 问题内容: 查看新的spark数据框api,尚不清楚是否可以修改数据框列。 我怎么会去改变行的值列一个数据帧的? 在这将是 编辑:合并以下内容,您不能修改现有数据框,因为它是不可变的,但是您可以返回具有所需修改的新数据框。 如果您只想根据条件替换列中的值,例如: 如果要对列执行某些操作并创建一个添加到数据框的新列: 如果希望新列的名称与旧列的名称相同,则可以添加其他步骤: 问题答案: 虽然您不能这

  • 我有一个dataframe,我在我的第一列groupByKey上有一个字符串数组,我想在我的dataframe的新列中实例一个新对象。 我将实例的对象具有以下结构:

  • 感谢您的时间和关注

  • 我希望能够更新嵌套数据集中的值。为此,我在Spark中创建了一个嵌套数据集。它有以下模式结构:- 现在我想更新数据集中中的值 也试过, 实现ForEach函数的方法 到目前为止,它们都没有取得任何成果,在第二种情况下,我使用foreach获得了相同的数据集,并使用名为的新列。还有其他类似的建议吗?