pyspark 根据另一列的权重获取列的中位数[重复]

sr4lhrrt  于 2023-10-15  发布在  Spark
关注(0)|答案(1)|浏览(93)

此问题已在此处有答案

NumPy or SciPy to calculate weighted median(5个答案)
2个月前关闭。
我有一个这样的数据框,

col1     col2
 100      3
 200      2
 300      4
 400      1

现在我想在col1上设置中位数,这样col2值将是每个col1值的权重,就像这样,

median of [100, 100, 100, 200, 200, 300, 300, 300, 300, 400] # 100 is 3 times as the weight is 3

我可以通过基于权重创建多个行来实现,但我不能允许更多的行,有没有什么方法可以更有效地做到这一点,而无需在python或pyspark中创建多个行

5fjcxozz

5fjcxozz1#

重复数值,然后计算中位数

df.loc[df.index.repeat(df['col2']), 'col1'].median()
250.0

相关问题