我使用Spark执行加载到Redshift的数据转换。Redshift不支持NaN值,因此我需要将所有出现的NaN替换为NULL。
我尝试过这样的事情:
some_table = sql('SELECT * FROM some_table')
some_table = some_table.na.fill(None)
但是我遇到了以下错误:
ValueError:值应为float,int,long,string,bool或dict
因此,似乎na.fill()
不支持无。我特别需要替换为NULL
,而不是其他一些值,例如0
。
谷歌搜索了一下之后,我终于找到了答案。
df = spark.createDataFrame([(1, float('nan')), (None, 1.0)], ("a", "b"))
df.show()
+----+---+
| a| b|
+----+---+
| 1|NaN|
|null|1.0|
+----+---+
import pyspark.sql.functions as F
columns = df.columns
for column in columns:
df = df.withColumn(column,F.when(F.isnan(F.col(column)),None).otherwise(F.col(column)))
sqlContext.registerDataFrameAsTable(df, "df2")
sql('select * from df2').show()
+----+----+
| a| b|
+----+----+
| 1|null|
|null| 1.0|
+----+----+
它没有使用na.fill()
,但是它实现了相同的结果,所以我很高兴。
问题内容: 我想用相邻列中的值替换一列中的空值,例如,如果我有 我希望它是: 尝试过 但是没用,它说值应该是浮点数,整数,长整数,字符串或字典 有任何想法吗? 问题答案: 最后找到一个替代方案:
我正在运行一个AWS Glue作业,使用从Glue自动生成的PySpark脚本,将S3上的管道分隔文件加载到RDS Postgres实例中。 最初,它抱怨某些列中的空值: http://spark.apache.org/docs/latest/api/python/pyspark.sql.sql.html#pyspark.sql.dataframe.fillna 现在,当我运行作业时,它会抛出以下
我在pyspark中有一个超过300列的数据帧。在这些列中,有些列的值为null。 例如: 当我想对列u 1求和时,结果得到的是Null,而不是724。 现在,我想用空格替换数据框所有列中的null。因此,当我尝试对这些列求和时,我不会得到null值,但会得到一个数值。 我们如何在pyspark中实现这一点
我想用相邻列中的值替换一列中的空值,例如,如果我 我希望它是: 尝试过 但没有工作,它说值应该是浮点数、int、长、字符串或判决 有什么想法吗?
编写此自定义项是为了用变量替换列的值。Python 2.7;Spark 2.2.0 变量L_1到L_3更新了每行的列。我这样称呼它: 错误是:
问题内容: 如果在select语句中有空值,我尝试用新字符串替换列: 我不尝试更新它,仅在查询结果中将值显示为“ no person”。 但我收到一个错误消息: 将varchar值转换为int数据类型时,转换失败。 我该如何克服? 问题答案: 替换为: 有了这个:
我想将数据帧列中的一个值替换为另一个值,我必须对许多列执行此操作(假设30/100列) 我已经经历过这个和这个了。 我可以在y列和z列中分别用Null替换“baz”。但我想对所有列都这样做——类似于下面的列表理解方式
问题内容: 我在MySQL中的运算结果中得到了价值。 有没有办法将这些值转换为值0? 问题答案: 是的,使用。 COALESCE遍历您提供的值列表,并返回第一个非空值。