gpt4 book ai didi

python - 想要在spark python中将字符串值转换为 float

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:12 24 4
gpt4 key购买 nike

您好,学科专家请查看并帮助我陷入困境我有两个文件,我使用 union 函数将它们组合起来是spark。并获得类似的输出。

文件1包含。(u'[12345, 90604080', 0.0) (u'[67890, 70806080', 320.0)

file2 包含。 (u'[12345, 90604080', 0.0) (u'[67890, 70806080', 0.0)

[u"(u'[12345", u"90604080'", u' 0.0)'][u"(u'[67890", u"70806080'", u' 320.0)'] 这是组合输出 [12345", u"90604080'"是我的键,0.0 是它们的值,我想根据这些值聚合值到按键并将输出存储到第三个文件中。这是我的代码。例如 '12345, 90604080',0.0 和 67890, 70806080', 320.0但出现以下错误ValueError:float() 的文字无效:70.0)

from pyspark import SparkContext

import os

import sys


sc = SparkContext("local", "aggregate")


file1 = sc.textFile("hdfs://localhost:9000/data//part-00000")
file2 = sc.textFile("hdfs://localhost:9000/data/second/part-00000")

file3 = file1.union(file2).coalesce(1).map(lambda line: line.split(','))

result = file3.map(lambda x: ((x[0]+', '+x[1],float(x[2])))).reduceByKey(lambda a,b:a+b).coalesce(1)



result.saveAsTextFile("hdfs://localhost:9000/Test1")

感谢您的帮助

最佳答案

看起来你的字符串中有一个额外的右括号。尝试:

result = file3.map(lambda x: ((x[0]+', '+x[1],float(x[2][:-1])))).reduceByKey(lambda a,b:a+b).coalesce(1)

澄清:

错误消息告诉我们浮点转换以 70.0) 作为参数。我们想要的是 70.0。因此,我们只需要省略字符串的最后一个字符,这可以通过索引切片来实现:

>>> a = "70.0)"
>>> a = a[:-1]
>>> print a
"70.0"

最后一行可以理解为 a 等于从索引 0 到索引 -1 的 a。 -1 相当于len(a)-1

关于python - 想要在spark python中将字符串值转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com