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
Hadoop Spark fillNa不替换空值_Hadoop_Apache Spark_Pyspark - Fatal编程技术网

Hadoop 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("/sam‌​ple.csv") >>> df.printSchema(); root |-- Age: string (nullable = true) |-- Height: string (nullable = true

我有以下数据集及其包含一些空值,需要在spark中使用fillna替换空值

数据帧:

df = spark.read.format("com.databricks.spark.csv").option("header‌​","true").load("/sam‌​ple.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是否替换高度列中与名称列不同的空值?在我的情况下,如果应用了规则或未指定规则,则不会替换空值。基本加注操作工作不正常。使用不同的数据集进行检查。