dataframe - 在“无类型”对象上转换 pyspark 数据帧失败
问题描述
我有一个包含许多列的 pyspark 数据框“data3”。我试图在它上面运行 kmeans,除了前两列,当我运行我的代码时,任务总是在 TypeError 上失败:float() 参数必须是字符串或数字,而不是 'NoneType' 我做错了什么?
def f(x):
rel = {}
#rel['features'] = Vectors.dense(float(x[0]),float(x[1]),float(x[2]),float(x[3]))
rel['features'] = Vectors.dense(float(x[2]),float(x[3]),float(x[4]),float(x[5]),float(x[6]),float(x[7]),float(x[8]),float(x[9]),float(x[10]),float(x[11]),float(x[12]),float(x[13]),float(x[14]),float(x[15]),float(x[16]),float(x[17]),float(x[18]),float(x[19]),float(x[20]),float(x[21]),float(x[22]),float(x[23]),float(x[24]),float(x[25]),float(x[26]),float(x[27]),float(x[28]),float(x[29]),float(x[30]),float(x[31]),float(x[32]),float(x[33]),float(x[34]),float(x[35]),float(x[36]),float(x[37]),float(x[38]),float(x[39]),float(x[40]),float(x[41]),float(x[42]),float(x[43]),float(x[44]),float(x[45]),float(x[46]),float(x[47]),float(x[48]),float(x[49]))
return rel
data= data3.rdd.map(lambda p: Row(**f(p))).toDF()
kmeansmodel = KMeans().setK(7).setFeaturesCol('features').setPredictionCol('prediction').fit(data)
TypeError: float() argument must be a string or a number, not 'NoneType'
解决方案
您的错误来自将x
s 转换为 float 因为您可能缺少值
rel['features'] = Vectors.dense(float(x[2]),float(x[3]),float(x[4]),float(x[5]),float(x[6]),float(x[7]),float(x[8]),float(x[9]),float(x[10]),float(x[11]),float(x[12]),float(x[13]),float(x[14]),float(x[15]),float(x[16]),float(x[17]),float(x[18]),float(x[19]),float(x[20]),float(x[21]),float(x[22]),float(x[23]),float(x[24]),float(x[25]),float(x[26]),float(x[27]),float(x[28]),float(x[29]),float(x[30]),float(x[31]),float(x[32]),float(x[33]),float(x[34]),float(x[35]),float(x[36]),float(x[37]),float(x[38]),float(x[39]),float(x[40]),float(x[41]),float(x[42]),float(x[43]),float(x[44]),float(x[45]),float(x[46]),float(x[47]),float(x[48]),float(x[49]))
return rel
您可以创建一个标志以x
在缺少值时将每个标志转换为浮点数。例如
list_of_Xs = [x[2], x[3], x[4], x[5], x[6],etc. ]
for x in list_of_Xs:
if x is not None:
x = float(x)
或使用rel.dropna()
推荐阅读
- javascript - 可折叠框未在 html 和 css 中显示我的所有文本
- python - EOFError:当我加载具有字典对象的泡菜文件时出现输入错误
- javascript - 仅在 2 周内启用日期格式 html
- c# - HttpClient 和 IHttpClientFactory 继承逻辑
- api - 如何编写通用函数来设置从一个 GET API 接收的令牌和 cookie 以使用 Rest Assured 测试其他 API
- macos - Firebase Emulator slow when using 0.0.0.0 host
- typescript - 为什么打字稿会抛出有关静态定义的错误
- c++ - 使用 pkgconfig 调试 makefile
- python - 给定一维和一个常数,有效地创建二维 numpy 数组
- amazon-web-services - AWS SSO 外部 SAML 身份提供程序无效的 MFA 凭证错误