如何用 PYSPARK 中的平均值替换空值?

飘逸

如何col1用平均值替换列中值?但是,有以下条件:

id   col1
1    12
1    NaN
1    14
1    10
2    22
2    20
2    NaN
3    NaN
3    NaN

的 NaN 值id=1应替换为在 上col1计算的平均值id=1,即12((12+14+10)/3))。这同样适用于id=2. id=3可以忽略诸如NaN 之类的情况

这是我尝试过的:

calcul = df.groupby("id").agg(func.mean("col1"))

df = df.withColumn("col1", func.when((df["col1"].isNull()), calcul.where(func.col("id")==df["id"])).otherwise(func.col("col1")))

请删除 Pandas 的重复标签。我使用 PYSPARK。

阿拉塔里加蒂

首先null从原始数据框和 groupby 中删除id并取平均值:

df_ave = df1.dropna().groupby('id').agg(F.mean('col1').alias('mean'))
df_ave.show()

输出:

+---+----+
| id|mean|
+---+----+
|  1|12.0|
|  2|21.0|
+---+----+

然后将其与您的原始数据框连接:

df1 = df1.join(df_ave, on='id', how='left')
df1.show()

输出:

+---+----+----+
| id|col1|mean|
+---+----+----+
|  1|12.0|12.0|
|  1| NaN|12.0|
|  1|14.0|12.0|
|  1|10.0|12.0|
|  3| NaN|null|
|  3| NaN|null|
|  2|22.0|21.0|
|  2|20.0|21.0|
|  2| NaN|21.0|
+---+----+----+

然后使用以下when语句并创建新列col1_new

df1 = df1.withColumn('col1_new', F.when( df1.col1=='NaN', df1.mean).otherwise(df1.col1))
df1.show()

输出:

+---+----+----+--------+
| id|col1|mean|col1_new|
+---+----+----+--------+
|  1|12.0|12.0|    12.0|
|  1| NaN|12.0|    12.0|
|  1|14.0|12.0|    14.0|
|  1|10.0|12.0|    10.0|
|  3| NaN|null|    null|
|  3| NaN|null|    null|
|  2|22.0|21.0|    22.0|
|  2|20.0|21.0|    20.0|
|  2| NaN|21.0|    21.0|
+---+----+----+--------+

您还可以删除不需要的列并重命名col1_newcol1.

df1 = df1.select('id', 'col1_new').withColumnRenamed('col1_new', 'col1')
df1.show()

输出:

+---+----+
| id|col1|
+---+----+
|  1|12.0|
|  1|12.0|
|  1|14.0|
|  1|10.0|
|  3|null|
|  3|null|
|  2|22.0|
|  2|20.0|
|  2|21.0|
+---+----+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用熊猫DataFrame中的先前值和后继值的平均值替换NaN?

来自分类Dev

如何获取pyspark中列的加权平均值

来自分类Dev

如何用熊猫中的ffill()和bfill()的平均值替换缺失值?

来自分类Dev

如何用python中的上限值和下限值的平均值填充空值?

来自分类Dev

如何用其绝对/平均值替换Pandas DataFrame列范围值?

来自分类Dev

如何用最接近的两个值的平均值替换NA

来自分类Dev

如何用行平均值替换熊猫数据透视表的0和nan值?

来自分类Dev

如何在不使用 group by 的情况下用平均值替换空值?

来自分类Dev

如何用缺失的前后值的平均值填充向量中的缺失值

来自分类Dev

Pyspark:如何用数组中的值替换每一行的值

来自分类Dev

如何用纯PySpark函数替换Timedelta Pandas函数?

来自分类Dev

在PySpark中,使用regexp_replace,如何用另一列中的值替换组?

来自分类Dev

如何使用前进和后退填充的平均值替换数据框中的NULL值?

来自分类Dev

如何用分隔符连接PySpark中的多个列?

来自分类Dev

我如何用R中的多个列和行的每个单元格的平均值替换每个单元格的多个值

来自分类Dev

用来自同一列的平均值填充Pyspark数据框列的空值

来自分类Dev

如何在PySpark数据帧中的第0轴上找到数组的平均值(数组列)?

来自分类Dev

如何对mongodb中的求和值求平均值?

来自分类Dev

如何获得组中“中间”值的平均值?

来自分类Dev

如何对mongodb中的求和值求平均值?

来自分类Dev

如何获取postgresql列中重复值的平均值?

来自分类Dev

我如何用numpy的行平均值替换丢失/屏蔽的数据

来自分类Dev

如何用NA所属行的平均值填充DataFrame中的NaN值,并返回新数据框

来自分类Dev

如何使用循环以基于R数据帧中另一列的平均值替换值

来自分类Dev

PySpark计算值变化时的平均值

来自分类Dev

如何用均值替换相似组的值?

来自分类Dev

如何用逗号分隔的值拆分列并存储在PySpark的Dataframe中的数组中?如下

来自分类Dev

如何用Apache Spark计算平均值?

来自分类Dev

如何替换pyspark中的行值?

Related 相关文章

  1. 1

    如何用熊猫DataFrame中的先前值和后继值的平均值替换NaN?

  2. 2

    如何获取pyspark中列的加权平均值

  3. 3

    如何用熊猫中的ffill()和bfill()的平均值替换缺失值?

  4. 4

    如何用python中的上限值和下限值的平均值填充空值?

  5. 5

    如何用其绝对/平均值替换Pandas DataFrame列范围值?

  6. 6

    如何用最接近的两个值的平均值替换NA

  7. 7

    如何用行平均值替换熊猫数据透视表的0和nan值?

  8. 8

    如何在不使用 group by 的情况下用平均值替换空值?

  9. 9

    如何用缺失的前后值的平均值填充向量中的缺失值

  10. 10

    Pyspark:如何用数组中的值替换每一行的值

  11. 11

    如何用纯PySpark函数替换Timedelta Pandas函数?

  12. 12

    在PySpark中,使用regexp_replace,如何用另一列中的值替换组?

  13. 13

    如何使用前进和后退填充的平均值替换数据框中的NULL值?

  14. 14

    如何用分隔符连接PySpark中的多个列?

  15. 15

    我如何用R中的多个列和行的每个单元格的平均值替换每个单元格的多个值

  16. 16

    用来自同一列的平均值填充Pyspark数据框列的空值

  17. 17

    如何在PySpark数据帧中的第0轴上找到数组的平均值(数组列)?

  18. 18

    如何对mongodb中的求和值求平均值?

  19. 19

    如何获得组中“中间”值的平均值?

  20. 20

    如何对mongodb中的求和值求平均值?

  21. 21

    如何获取postgresql列中重复值的平均值?

  22. 22

    我如何用numpy的行平均值替换丢失/屏蔽的数据

  23. 23

    如何用NA所属行的平均值填充DataFrame中的NaN值,并返回新数据框

  24. 24

    如何使用循环以基于R数据帧中另一列的平均值替换值

  25. 25

    PySpark计算值变化时的平均值

  26. 26

    如何用均值替换相似组的值?

  27. 27

    如何用逗号分隔的值拆分列并存储在PySpark的Dataframe中的数组中?如下

  28. 28

    如何用Apache Spark计算平均值?

  29. 29

    如何替换pyspark中的行值?

热门标签

归档