pyspark 按列将数据帧拆分为几个数据帧
Posted
技术标签:
【中文标题】pyspark 按列将数据帧拆分为几个数据帧【英文标题】:pyspark split data frame into few data frames by column 【发布时间】:2016-12-23 14:29:53 【问题描述】:我正在使用 Python (pyspark)
我有一个包含少数用户数据的数据框
IMSI X Y
1 139620 179284
1 139620 179284
3 138620 178284
3 138620 178284
3 138620 178284
我想创建由 IMSI 列拆分的 RDD-DF 对象
这样我就可以为每个 DF 操作一个 Python 函数
SplitDF.map(PythonFunctionForEachUser)
【问题讨论】:
【参考方案1】:您可以使用两种方法。如果你想对 RDD 进行操作可以使用groupByKey
:
df.rdd.keyBy(lambda r: r.IMSI).groupByKey().map(lambda a: PythonFunctionForEachUser(a[1]))
如果您更喜欢 Dataframes,您可以按 IMSI 列分组,然后按 collect_list
,但首先您需要将这些 x 和 y 合并为一列:
>>> from pyspark.sql.functions import array
>>> df.withColumn('data', array('x', 'y')).groupBy('IMSI') \
.agg(collect_list('data').alias('userdata')) \
.rdd.map(PythonFunctionForEachUser)
【讨论】:
以上是关于pyspark 按列将数据帧拆分为几个数据帧的主要内容,如果未能解决你的问题,请参考以下文章
当 ID 匹配时,在其他 Pyspark 数据帧中按列划分 Pyspark 数据帧列