加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何从列表中选择多个非连续列到python中的另一个数据帧

发布时间:2020-12-20 12:09:39 所属栏目:Python 来源:网络整理
导读:我正在研究I python和Spark,我有一个RDD,我从中形成一个列表.现在从这个列表中我想形成一个数据框,它有父列表中的多列但这些列不是连续的.我写了这个,但似乎工作错了: list1 = rdd.collect()columns_num = [1,8,11,17,21,24]df2 = [list[i] for i in column
我正在研究I python和Spark,我有一个RDD,我从中形成一个列表.现在从这个列表中我想形成一个数据框,它有父列表中的多列但这些列不是连续的.我写了这个,但似乎工作错了:

list1 = rdd.collect()
columns_num = [1,8,11,17,21,24]
df2 = [list[i] for i in columns_num]

上面的代码只从父列表中选择6行,只有第1列数据,并形成具有这6列1数据的新数据帧.

如何从另一个列表中创建具有多个不连续列的新数据框

解决方法

例如这样:

rdd = sc.parallelize([("a",1,2,4.0,"foo"),("b",3,4,5.0,"bar")])
columns_num = [0,3]

df = rdd.toDF()
df2 = df.select(*(df.columns[i] for i in columns_num))
df2.show()

##  +---+---+
##  | _1| _4|
##  +---+---+
##  |  a|4.0|
##  |  b|5.0|
##  +---+---+

或者像这样:

df = rdd.map(lambda row: [row[i] for i in columns_num]).toDF()
df.show()

##  +---+---+
##  | _1| _4|
##  +---+---+
##  |  a|4.0|
##  |  b|5.0|
##  +---+---+

在一方面,你不应该只是为了重塑收集数据.在最好的情况下它会很慢,在最坏的情况下它会崩溃.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读