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

PySpark将列中的null替换为其他列中的值

祁凯泽
2023-03-14

我想用相邻列中的值替换一列中的空值,例如,如果我

A|B
0,1
2,null
3,null
4,2

我希望它是:

A|B
0,1
2,2
3,3
4,2

尝试过

df.na.fill(df.A,"B")

但没有工作,它说值应该是浮点数、int、长、字符串或判决

有什么想法吗?

共有3个答案

宰父桐
2023-03-14
df.rdd.map(lambda row: row if row[1] else Row(a=row[0],b=row[0])).toDF().show()
万俟渝
2023-03-14

另一个答案。

如果以下< code>df1是您的数据帧

rd1 = sc.parallelize([(0,1), (2,None), (3,None), (4,2)])
df1 = rd1.toDF(['A', 'B'])

from pyspark.sql.functions import when
df1.select('A',
           when( df1.B.isNull(), df1.A).otherwise(df1.B).alias('B')
          )\
   .show()
裴俊智
2023-03-14

我们可以利用联合

from pyspark.sql.functions import coalesce
    
df.withColumn("B",coalesce(df.B,df.A)) 
 类似资料:
  • 问题内容: 我想用相邻列中的值替换一列中的空值,例如,如果我有 我希望它是: 尝试过 但是没用,它说值应该是浮点数,整数,长整数,字符串或字典 有任何想法吗? 问题答案: 最后找到一个替代方案:

  • 我想将数据帧列中的一个值替换为另一个值,我必须对许多列执行此操作(假设30/100列) 我已经经历过这个和这个了。 我可以在y列和z列中分别用Null替换“baz”。但我想对所有列都这样做——类似于下面的列表理解方式

  • 我在尝试用空值替换Spark数据帧特定列的值时遇到了一个问题。我有一个超过50列的数据框架,其中两列是关键列。我想用相同的模式创建一个新的数据框,新的数据框应该具有来自键列的值,而非键列中的值应该为null。我尝试了以下方法,但遇到了问题: 当我在中只有字符串类型列时,这种方法很好。但是我有一些双类型和int类型的列,这是抛出错误的,因为rdd是一个空字符串列表。 为了避免这种情况,我尝试将作为空

  • 我正在使用pyspark下面是我的数据

  • 我在Python中使用这个熊猫数据帧。 我需要用Farheit列中的值替换列中的所有NaN。 这就是我需要的: 如果进行布尔选择,一次只能选择其中一列。问题是,如果我尝试加入他们,我无法在保持正确顺序的同时做到这一点。 我如何才能只找到带有s的行,并用列的同一行中的值替换它们?

  • 问题内容: 我想通过替换子字符串对Spark Dataframe列执行一些基本的处理。最快的方法是什么? 在当前的用例中,我有一个要规范化的地址列表。例如,此数据框: 会成为 问题答案: 对于Spark 1.5或更高版本,可以使用功能包: 快速说明: 调用该函数可在数据框中添加(或替换,如果名称存在)列。 该函数将通过替换所有与模式匹配的子字符串来生成新列。