我有一张表格,其中包含我的客户数据:
Customer Price
AAA 100
AAA 100
AAA 200
BBB 100
BBB 220
BBB 200
BBB 200
我想要做的是找出条件为number of price >= 200 is more than number of price < 200
的客户,并为他们添加标签。
例如:
Customer LABELS
AAA FALSE
BBB TRUE
有关此问题的任何想法吗?
答案 0 :(得分:5)
df.Price.ge(200).groupby(df.Customer).mean().gt(.5)
Customer
AAA False
BBB True
Name: Price, dtype: bool
或者如果你坚持你的格式
df.Price.ge(200).groupby(df.Customer).mean().gt(.5).reset_index(name='Labels')
Customer Labels
0 AAA False
1 BBB True
答案 1 :(得分:2)
直截了当的答案:
df.groupby('Customer').apply(
lambda g: (g['Price'] >= 200).sum() > (g['Price'] < 200).sum()
)
对布尔向量求和将返回True
值的数量。