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

如何在Pyspark中替换数据帧的所有Null值

狄望
2023-03-14

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

例如:

Column_1 column_2
null     null
null     null
234      null
125      124
365      187
and so on

当我想对列u 1求和时,结果得到的是Null,而不是724。

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

我们如何在pyspark中实现这一点

共有3个答案

孙震博
2023-03-14

使用fillna有3个选项。。。

文档:

def fillna(self, value, subset=None):
   """Replace null values, alias for ``na.fill()``.
   :func:`DataFrame.fillna` and :func:`DataFrameNaFunctions.fill` are aliases of each other.

   :param value: int, long, float, string, bool or dict.
       Value to replace null values with.
       If the value is a dict, then `subset` is ignored and `value` must be a mapping
       from column name (string) to replacement value. The replacement value must be
       an int, long, float, boolean, or string.
   :param subset: optional list of column names to consider.
       Columns specified in subset that do not have matching data type are ignored.
       For example, if `value` is a string, and subset contains a non-string column,
       then the non-string column is simply ignored.

所以你可以:

  1. 用相同的值填充所有列:<代码>df。fillna(值)

fillna()na.fill()的别名,所以它们是相同的。

周博达
2023-03-14

您可以使用fillna()func。

>>> df = spark.createDataFrame([(1,), (2,), (3,), (None,)], ['col'])
>>> df.show()
+----+
| col|
+----+
|   1|
|   2|
|   3|
|null|
+----+

>>> df = df.fillna({'col':'4'})
>>> df.show()

or df.fillna({'col':'4'}).show()

+---+
|col|
+---+
|  1|
|  2|
|  3|
|  4|
+---+
尉迟栋
2023-03-14

您可以使用df。不适用。填充以将Null替换为零,例如:

>>> 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|
+---+
 类似资料:
  • 我有一个包含n列的数据帧,我想用空值替换所有这些列中的空字符串。 我试过用 和 他们两个都没有工作。 如有任何线索,我们将不胜感激。谢谢

  • 我有一份价值观清单。如何替换Dataframe列中不在给定值列表中的所有值? 例如 我想用“无”替换数据框S列中不在允许值列表中的所有值。我该怎么做?

  • 我有一个简单的PySpark数据框架,df1- 输出- 我有另一个PySpark数据帧df2- 输出- 我必须连接上面提到的两个数据帧,通过对它们使用左连接操作- 输出- 但如您所见,我在有两个表不匹配的行中获得空值。如何将所有空值替换为0?

  • 当我尝试将函数应用于Amount列时,我得到以下错误: 我试过使用Math模块中的.isnan应用函数我试过使用pandas.replace属性我试过使用pandas0.9中的.sparse data属性我也试过使用函数中的if NaN==NaN语句。我还看了这篇文章,如何在R数据帧中用0替换NA值?同时查看一些其他文章。我试过的所有方法都不起作用,或者不认识南。如有任何提示或解决方案,将不胜感激

  • 在从< code>RDD制作< code >数据帧时,我遇到了一个错误。 我收到以下错误: py spark . SQL . utils . parse exception:u " \ nmis matched input ' '应为{'SELECT ',' FROM ',' ADD ',' AS ',' ALL ',' DISTINCT ',' WHERE ',' GROUP ',' BY ',

  • 预期产出 每列计数为nan/null的数据帧 注意:我在堆栈溢出中发现的前面的问题只检查null 我知道我可以在Spark中使用函数来查找Spark列中的空值数,但如何在Spark数据帧中查找Nan值?