【发布时间】:2017-12-30 09:18:52
【问题描述】:
我想创建一个新的数据框,其中 type 列将是基于 最高 count 的 topX。
将有一个 additional 类型 (others),它将是同一组 name 的所有 typeX 的 sum。
对于 DF:
data = spark.createDataFrame([
("name1", "type1", 2), ("name1", "type2", 1), ("name1", "type3", 4), ("name1", "type3", 5), \
("name2", "type1", 6), ("name2", "type1", 7), ("name2", "type2", 8) \
],["name", "type", "cnt"])
data.printSchema()
是什么:
|name |type|cnt|
|------|-----------
|name1 |typeA| 6|
|name1 |typeX| 5|
|name1 |typeW| 3|
|name1 |typeZ| 1|
|name2 |typeA| 7|
|name2 |typeB| 2|
| .... | ... | |
生成的数据框(前 2 名)将是: 每个名字都有前2个值+“其他”(3组)
|name |type|cnt|
|------|-----------
|name1 |typeA| 6|
|name1 |typeX| 5|
|name1 |other| 4|
|name2 |typeA| 7|
|name2 |typeB| 2|
|name2 |other| 0|
| .... | ... | |
我不确定如何跳过某个组的 X 行,然后开始聚合剩余的行。
【问题讨论】:
-
每个名字都有重复的类型吗?您的代码似乎没有给出您正在显示的表格。
标签: python apache-spark dataframe aggregation