【发布时间】:2016-12-27 17:16:54
【问题描述】:
假设我有以下数据框:
dummy_data = [('a',1),('b',25),('c',3),('d',8),('e',1)]
df = sc.parallelize(dummy_data).toDF(['letter','number'])
我想创建以下数据框:
[('a',0),('b',2),('c',1),('d',3),('e',0)]
我所做的是将其转换为rdd 并使用zipWithIndex 函数,然后加入结果:
convertDF = (df.select('number')
.distinct()
.rdd
.zipWithIndex()
.map(lambda x:(x[0].number,x[1]))
.toDF(['old','new']))
finalDF = (df
.join(convertDF,df.number == convertDF.old)
.select(df.letter,convertDF.new))
数据帧中是否有与zipWIthIndex 类似的功能?还有其他更有效的方法来完成这项任务吗?
【问题讨论】:
标签: python apache-spark pyspark spark-dataframe