我试图运行fillna在列中插入带有特殊字符“.”的nan
df = spark.createDataFrame(
[(None, None), ('U1', None), ('U3', 1.0)],
['USER_ID', 'a.b']
)
我试过了
df = df.fillna({"`a.b`": float("nan")})
也
df = df.fillna({"a.b": float("nan")})
两个都不行,谁有这方面的经验?
我试图运行fillna在列中插入带有特殊字符“.”的nan
df = spark.createDataFrame(
[(None, None), ('U1', None), ('U3', 1.0)],
['USER_ID', 'a.b']
)
我试过了
df = df.fillna({"`a.b`": float("nan")})
也
df = df.fillna({"a.b": float("nan")})
两个都不行,谁有这方面的经验?
2条答案
按热度按时间vojdkbi01#
这似乎是有限制的
pyspark.sql.DataFrame.fillna()
这不允许您在使用value
参数作为字典。从文档中:
value–用int、long、float、string、bool或dict.值替换空值。如果值是dict,则忽略子集,并且值必须是从列名(字符串)到替换值的Map。替换值必须是int、long、float、boolean或string。
你应该可以使用
fillna
使用指定value
以及subset
参数。上面这些在Spark2.4中对我有用,但我不明白为什么它不能在旧版本上工作。
如果仍然有问题,另一种方法是临时重命名列,调用
fillna
,然后将列重命名回原始值:在这里,我将重命名列以替换
"."
用绳子"_DOT_"
,我特意选择它以避免与其他列名中现有的子字符串冲突。wwtsj6pe2#
这是有效的。