python - 如何从列表中选择多个不连续的列到python中的另一个数据框中

标签 python apache-spark apache-spark-sql pyspark

我正在研究 IpythonSpark,我有一个 RDD,我从中形成了一个 list。现在从这个 list 我想形成一个 dataframe 它有来自父 list 的多列,但这些列不连续。我写了这个,但它似乎工作不对:

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

上面的代码只从父 list 中选择 6 行,只有第 1 列数据,并用这 6 列第 1 数据形成新的 dataframe

如何使用来自另一个 list 的多个不连续列形成一个新的 dataframe

最佳答案

例如像这样:

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|
##  +---+---+

另一方面,您永远不应该为了 reshape 而收集数据。在最好的情况下,它会很慢,在最坏的情况下,它只会崩溃。

关于python - 如何从列表中选择多个不连续的列到python中的另一个数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33979732/

相关文章:

python - 为什么我得到 "webbrowser.Error: could not locate runnable browser"?

java - Spark : get groupBy output as list of rows

python - Spark python脚本不写入hbase

Python Tf idf算法

python - 排序/过滤/求和列表中递增数字的最快方法是什么

python - 如何将字符串转换为 python 中已创建的变量/列表的名称?

maven - 如何使用 *local* 包运行 spark shell?

python - 如何使用 Spark Data Frame 中前一行的两列计算一行中的列?

python - 如何将常量值传递给 Python UDF?

scala - 如何在 Spark 中压缩两个(或更多)DataFrame