我的PySpark数据框中有一些值显示为NaN,我发现可以将它们转换为空值。然后,我通过将该值输入到其他值来调整这些空值。在执行此操作时,我发现它也将我的许多列中的0变为null。为什么会发生这种情况?我如何将nan转换为NULL而不影响0s
cSchema = StructType([StructField("col", LongType())])
vals = [[0] for i in range(20)]
test_df = spark.createDataFrame(vals,schema=cSchema)
test_df.show(20)
+---+
|col|
+---+
| 0|
| 0|
| 0|
| 0|
| 0|
| 0|
| 0|
| 0|
| 0|
| 0|
| 0|
test_df = test_df.replace(float('nan'), None)
test_df.show(20)
+----+
| col|
+----+
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
|null|
示例中的模式不适合您尝试执行的操作。您正在(长)整数列中搜索浮点值。我很惊讶
replace
没有完全忽略该列…下面是当您尝试直接创建这样一个DF时发生的情况:
下面是使用适当的模式时发生的情况
因此,可以尝试预先将所有内容强制转换为float/double(如果nan-s在整数列中混合),或者使用^{} 的
subset
参数指定只搜索float列相关问题 更多 >
编程相关推荐