首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将point数据转换为标有标记的point对象

将point数据转换为标有标记的point对象
EN

Stack Overflow用户
提问于 2016-08-11 22:02:40
回答 1查看 3.7K关注 0票数 2
代码语言:javascript
复制
df:
[Row(split(value,,)=[u'21.0', u'1',u'2']),Row(split(value,,)=[u'22.0', u'3',u'4'])]

如何将df中的每一行转换为LabeledPoint对象,该对象由标签和特性组成,其中第一个值是标签,其余的2个是每行中的特性。

代码语言:javascript
复制
mycode:

df.map(lambda row:LabeledPoint(row[0],row[1: ]))

这似乎不起作用,因此,任何建议都是有益的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 11:21:50

如果您想获得一个RDD,您需要创建一个函数来解析Array of String

代码语言:javascript
复制
a = sc.parallelize([([u'21.0', u'1',u'2'],),([u'22.0', u'3',u'4'],)]).toDF(["value"])
a.printSchema()

#root
#|-- value: array (nullable = true)
#|    |-- element: string (containsNull = true)

要实现这一点,请检查我的功能。

代码语言:javascript
复制
def parse(l):
  l = [float(x) for x in l]

  return LabeledPoint(l[0], l[1:])

在定义了这样的函数之后,map您的DataFrame以便map它的内部RDD

代码语言:javascript
复制
a.map(lambda l: parse(l[0])).take(2)

# [LabeledPoint(21.0, [1.0,2.0]), LabeledPoint(22.0, [3.0,4.0])]

在这里,您可以找到我测试所有内容的已出版笔记本

PD:如果您使用toDF,您将获得两列(特性和标签)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38906803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档