【发布时间】:2019-09-02 07:06:52
【问题描述】:
我想根据 pyspark 数据框的两列中的唯一值对列进行分组。数据框的输出应该是这样的,一旦某个值用于 groupby 并且如果它存在于另一列中,那么它不应该重复。
|------------------|-------------------|
| fruit | fruits |
|------------------|-------------------|
| apple | banana |
| banana | apple |
| apple | mango |
| orange | guava |
| apple | pineapple |
| mango | apple |
| banana | mango |
| banana | pineapple |
| -------------------------------------|
我尝试使用单列进行分组,需要对其进行修改或需要一些其他逻辑。
df9=final_main.groupBy('fruit').agg(collect_list('fruits').alias('values'))
我从上述查询中得到以下输出;
|------------------|--------------------------------|
| fruit | values |
|------------------|--------------------------------|
| apple | ['banana','mango','pineapple'] |
| banana | ['apple'] |
| orange | ['guava'] |
| mango | ['apple'] |
|------------------|--------------------------------|
但我想要以下输出;
|------------------|--------------------------------|
| fruit | values |
|------------------|--------------------------------|
| apple | ['banana','mango','pineapple'] |
| orange | ['guava'] |
|------------------|--------------------------------|
【问题讨论】:
-
这真的取决于你的数据框的顺序,对吧?我是否正确假设如果香蕉在苹果之前加工,那么香蕉仍然存在?
-
如果一旦对值进行分组,则从该分组数据中不应重复任何值,即如果香蕉先出现,那么它应该是 [banana | ['apple','mango','pineapple'] 然后 [orange | ['guava'] 是输出
-
spark 数据帧没有保证顺序,这对您的结果重要吗?
-
没有。结果不重要
标签: pyspark pyspark-sql pyspark-dataframes