【发布时间】:2017-03-10 11:28:30
【问题描述】:
我们如何遍历数据框中的列以单独对同一数据框中的某些或所有列执行计算,而不为单个列创建不同的数据框(类似于 map 遍历 rdd 中的行并对行执行计算没有为每一行制作不同的rdd)。 我达到了下面给出的解决方案。
l = list of column names
df = dataframe in pyspark
def plusone(df_column):
return (df_column + 1)
df1 = df.select(map(lambda x: (plusone(getattribute(df,l[x]))) if x ==0 else getattribute(df,l[x]), range(len(l))))
print df1.show()
通过这种方式,我得到了一个数据框,其中包含我想要的特定列中的更改,而不是为列创建不同的数据框,然后与 df 合并并删除旧列。
此代码的问题是它不会在 spark 上分发,因为 map 会遍历列表。我想要这样的分布式方式。
P.S.- 我不想使用 rdd。
提前致谢!
【问题讨论】:
标签: python-2.7 pyspark spark-dataframe