【发布时间】:2019-03-27 18:01:16
【问题描述】:
所以,我已经进行了足够的研究,但还没有找到可以解决我想做的事情的帖子。
我有一个 PySpark DataFrame my_df,它是 sorted by value column-
+----+-----+
|name|value|
+----+-----+
| A| 30|
| B| 25|
| C| 20|
| D| 18|
| E| 18|
| F| 15|
| G| 10|
+----+-----+
value 列中所有计数的总和等于136。我想获取combined values >= x% of 136 的所有行。在此示例中,假设为 x=80。然后target sum = 0.8*136 = 108.8。因此,新的 DataFrame 将包含所有具有combined value >= 108.8 的行。
在我们的示例中,这将归结为 D 行(因为组合值高达 D = 30+25+20+18 = 93)。
但是,困难的部分是我还想包含紧随其后的具有重复值的行。在这种情况下,我还想包含行 E,因为它与行 D 具有相同的值,即 18。
我想通过给出一个百分比x 变量来分割my_df,例如如上所述的80。新的 DataFrame 应包含以下行-
+----+-----+
|name|value|
+----+-----+
| A| 30|
| B| 25|
| C| 20|
| D| 18|
| E| 18|
+----+-----+
我可以在这里做的一件事是遍历 DataFrame (which is ~360k rows),但我想这违背了 Spark 的目的。
这里有我想要的简洁功能吗?
【问题讨论】:
-
添加了更好的描述
-
你能把你使用的代码分享给
sortDataFrame吗?它是基于value的吗?还是value和name? -
按
value排序
标签: python apache-spark pyspark apache-spark-sql