如何从列表中选择多个非连续列到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| ## +---+---+ 在一方面,你不应该只是为了重塑收集数据.在最好的情况下它会很慢,在最坏的情况下它会崩溃. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |