Dataframe 如何替换Pyspark中数据帧的所有空值

Dataframe 如何替换Pyspark中数据帧的所有空值,dataframe,null,pyspark,Dataframe,Null,Pyspark,我在pyspark中有一个超过300列的数据帧。在这些列中,有些列的值为null 例如: Column_1 column_2 null null null null 234 null 125 124 365 187 and so on >>> df = spark.createDataFrame([(1,), (2,), (3,), (None,)], ['col']) >>> df.show() +----+

我在pyspark中有一个超过300列的数据帧。在这些列中,有些列的值为null

例如:

Column_1 column_2
null     null
null     null
234      null
125      124
365      187
and so on
>>> df = spark.createDataFrame([(1,), (2,), (3,), (None,)], ['col'])
>>> df.show()
+----+
| col|
+----+
|   1|
|   2|
|   3|
|null|
+----+

>>> df.na.fill(0).show()
+---+
|col|
+---+
|  1|
|  2|
|  3|
|  0|
+---+
当我想对列_1求和时,结果得到的是Null,而不是724

现在,我想用空空间替换数据帧所有列中的null。所以当我尝试对这些列求和时,我不会得到一个空值,但会得到一个数值


如何在pyspark中实现这一点,您可以使用
df.na.fill
将空值替换为零,例如:

Column_1 column_2
null     null
null     null
234      null
125      124
365      187
and so on
>>> df = spark.createDataFrame([(1,), (2,), (3,), (None,)], ['col'])
>>> df.show()
+----+
| col|
+----+
|   1|
|   2|
|   3|
|null|
+----+

>>> df.na.fill(0).show()
+---+
|col|
+---+
|  1|
|  2|
|  3|
|  0|
+---+
可以使用fillna()func


使用
fillna
有3个选项

文件:

因此,您可以:

  • 用相同的值填充所有列:
    df.fillna(值)
  • 传递列-->值的字典:
    df.fillna(将列的dict\u转换为值)
  • 传递要用相同值填充的列列表:
    df.fillna(值,子集=列的列表)

  • fillna()
    na.fill()
    的别名,因此它们是相同的。

    此函数是首选函数,因为您可以指定要使用的列,谢谢。这也是首选函数,因为您可以将其分配给同一个或另一个数据帧。