我有一个将熊猫数据框转换为元组列表的现有逻辑。
list(zip(*[df[c].values.tolist() for c in df]))
其中 df 是熊猫数据框。
有人请帮我在 pyspark 中实现没有熊猫的相同逻辑。
我有一个将熊猫数据框转换为元组列表的现有逻辑。
list(zip(*[df[c].values.tolist() for c in df]))
其中 df 是熊猫数据框。
有人请帮我在 pyspark 中实现没有熊猫的相同逻辑。
您可以先使用该方法将 转换dataframe
为。数据框中的A也是,因此您可以:RDD
rdd
Row
tuple
rdd = df.rdd
b = rdd.map(tuple)
b.collect()
示例 DF:
df.show()
+-----+-----+
| Name|Score|
+-----+-----+
|name1|11.23|
|name2|14.57|
|name3| 2.21|
|name4| 8.76|
|name5|18.71|
+-----+-----+
后b.collect()
[('name1', 11.23), ('name2', 14.57), ('name3', 2.21), ('name4', 8.76), ('name5', 18.71)]
如果你要遍历这个元组列表,你可以调用collect()
,但正确的方法是toLocalIterator()
collect
没有但有的替代方案collect_list
import pyspark.sql.functions as F
df.show()
+-----+-----+
| Name|Score|
+-----+-----+
|name1|11.23|
|name2|14.57|
|name3| 2.21|
|name4| 8.76|
|name5|18.71|
+-----+-----+
@F.udf
def combo(*args):
return [_ for _ in args][0]
df.withColumn('Combo', combo(F.array('Name','Score'))).agg(F.collect_list('Combo')).show(truncate=False)
+--------------------------------------------------------------------------+
|collect_list(Combo) |
+--------------------------------------------------------------------------+
|[[name1, 11.23],[name2, 14.57],[name3, 2.21],[name4, 8.76],[name5, 18.71]]|
+--------------------------------------------------------------------------+