我有一个包含n列的数据帧,我想用空值替换所有这些列中的空字符串。
我试过用
val ReadDf = rawDF.na.replace("columnA", Map( "" -> null));
和
val ReadDf = rawDF.withColumn("columnA", if($"columnA"=="") lit(null) else $"columnA" );
他们两个都没有工作。
如有任何线索,我们将不胜感激。谢谢
您的第一个方法接缝失败,因为一个错误阻止了替换
能够将值替换为空值,请参阅此处。
第二种方法失败了,因为您混淆了驱动程序端Scala代码和执行器端数据帧指令:if-else表达式将在驱动程序上计算一次(而不是每个记录);您希望用调用when函数来替换它;此外,要比较列的值,需要使用操作符,而不是Scala的操作符,Scala的操作符只是比较驾驶员侧列对象:
import org.apache.spark.sql.functions._
rawDF.withColumn("columnA", when($"columnA" === "", lit(null)).otherwise($"columnA"))
我在pyspark中有一个超过300列的数据帧。在这些列中,有些列的值为null。 例如: 当我想对列u 1求和时,结果得到的是Null,而不是724。 现在,我想用空格替换数据框所有列中的null。因此,当我尝试对这些列求和时,我不会得到null值,但会得到一个数值。 我们如何在pyspark中实现这一点
我和Spark一起在Databricks上工作。编程语言是Scala。 我有两个数据帧: 主数据框:见截图:1 查找数据帧:参见屏幕截图3 我想: 查找主数据框中“年龄”=-1的所有行 我对如何做这件事伤了脑筋。我唯一想到的是将dataframe存储为DataRicks中的表,并使用SQL语句(SQL.Context.SQL…),结果非常复杂。 我想知道是否有更有效的方法。 编辑:添加可复制的示例
这里我想要的是将特定列中的值替换为null,如果它是空字符串。 原因是我使用的是以基于另一列填充数据帧的一列,但我注意到在某些行中,值是而不是,因此函数无法按预期工作。 在上面的例子中,我希望首先用列填充,如果它不为空,如果它为空,则用列等等。但是由于某个时候,列被而不是null填充,我在'resolved_id'中得到了。 我试过用 但基于留档,只有当键和值都是或或时才有效,所以我不能在这里使用
我正在使用: Python 3.6.8 火花2.4.4 我在spark类路径中有以下JAR: http://repo1.maven.org/maven2/com/databricks/spark-redshift_2.11/2.0.1/spark-redshift_2.11-2.0.1.jar http://repo1.maven.org/maven2/com/databricks/spark-a
RDD是以数组[数组[字符串]的格式创建的,具有以下值: 我想用模式创建一个数据帧: 接下来的步骤: 给出以下错误:
我有一个如下的CSV文件。 我想把这个转化成下面。 基本上,我想在输出数据帧中创建一个名为idx的新列,该列将填充与键=idx,value=“n”后面的行相同的值“n”。