Hadoop Spark fillNa不替换空值
我有以下数据集及其包含一些空值,需要在spark中使用fillna替换空值 数据帧:Hadoop Spark fillNa不替换空值,hadoop,apache-spark,pyspark,Hadoop,Apache Spark,Pyspark,我有以下数据集及其包含一些空值,需要在spark中使用fillna替换空值 数据帧: df = spark.read.format("com.databricks.spark.csv").option("header","true").load("/sample.csv") >>> df.printSchema(); root |-- Age: string (nullable = true) |-- Height: string (nullable = true
df = spark.read.format("com.databricks.spark.csv").option("header","true").load("/sample.csv")
>>> df.printSchema();
root
|-- Age: string (nullable = true)
|-- Height: string (nullable = true)
|-- Name: string (nullable = true)
>>> df.show()
+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10| 80|Alice|
| 5| null| Bob|
| 50| null| Tom|
| 50| null| null|
+---+------+-----+
>>> df.na.fill(10).show()
当我给出na值时,它没有改变,相同的数据帧再次出现
+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10| 80|Alice|
| 5| null| Bob|
| 50| null| Tom|
| 50| null| null|
+---+------+-----+
尝试创建一个新的dataframe并将填充值存储在dataframe中,但结果显示如未更改
>>> df2 = df.na.fill(10)
如何替换空值?请给我使用fill na的可能方法。
提前谢谢。您的
高度列似乎不是数字。当您调用df.na.fill(10)
spark时,spark仅用与10
类型匹配的列替换空值,这些列是数字列
如果Height
列需要为字符串,可以尝试df.na.fill('10').show()
,否则必须强制转换为IntegerType()
。如果愿意,还可以为每个列提供特定的默认值
df.na.fill({'Height': '10', 'Name': 'Bob'})
df.na.fill('10').show()
我将尝试使用此代码,但无法正常工作。如何转换为int
任何示例?您可以在这里找到转换数据框列的文档:'int'
类型或IntegerType()
是存储数字的有效类型。@Marisuz感谢它的工作信息。现在我有一个疑问,我是否可以像这样直接填充字符串df.na.fill(“sample”)
,而不是给出条件df.na.fill({'age':50,'name':'sample'})
。是的,当然。看一看文档。我会检查文档,但我没有找到任何适合我的案例。有没有替代条件的方法?有没有替换的规则?e、 g是否替换高度列中与名称列不同的空值?在我的情况下,如果应用了规则或未指定规则,则不会替换空值。基本加注操作工作不正常。使用不同的数据集进行检查。