【发布时间】:2018-11-05 15:54:32
【问题描述】:
我有一个 pyspark 数据框,我想在组内将一行除以另一行。在组内将有两行:一行的计数值为removal == 1,另一行的计数值为removal == 0。
如何将一个计数除以另一个计数以获得新列中每个组的比率? groupBy 位于 limit 和 test_id
columns = ['removal', 'limit', 'test_id', 'count']
vals = [
(1, 'UL', 'AB', 141),
(0, 'UL', 'AB', 140),
(1, 'LL', 'AB', 21),
(0, 'LL', 'AB',12),
(0, 'UL', 'EF', 200),
(1, 'UL', 'EF',12)
]
我想要什么:(或类似的布局)
columns = ['limit', 'test_id', 'ratio', count_1, count_0]
vals = [
('UL', 'AB', 1.007, 141, 140)
('LL', 'AB', 1.75, 21, 12),
('UL', 'EF', 0.06, 12, 200)
]
我知道如何通过拆分然后再次合并数据来做到这一点,但我宁愿有一个更好的 agg 函数。
【问题讨论】:
标签: group-by pyspark apache-spark-sql row aggregate