确定争用/违反特定规则的行的最佳方法是什么?
我有一个数据框,代表可以出售的商店/商品的组合。这里商店可能有许多商品,商品可能在许多商店。例如:
Row Store Item Price Warehouse Zone Status
1, Store-1, Basketball, 5.99, 21, Z1, Active
2, Store-1, Football, 6.99, 21, Z2, Active
3, Store-2, Basketball 5.99, 21, Z1, Active
4, Store-1, Basketball 4.99, 22, Z1, Not-Active
目标是选择商店/商品组合,但有时特定商店/商品组合有很多选择。关于选择哪种组合,有特定的规则。所有列出的转换都适用于数据框中的所有行,但我只想关注存在争用的行。在这里它将是1& 4。
数据框中将有数百万行。数据框中的大多数项目都是单例(从而使选择变得简单),但对于某些项目来说,选择变得更加困难,因为规则是分层的,即比较采购区域,比较状态,比较价格,以及它们是否全部等于选择你遇到的第一个。
寻找想法或建议。
答案 0 :(得分:0)
过滤和减少怎么样?
假设数据框为df
,组合为store/item
,并且您有一个函数compare
,它确定两行中较好的一个。代码是
def compare(row1: Row, row2: Row): Row
df.filter($"Store" === store && $"Item" === item).reduce(compare)