Python 找出最频繁的组合并添加标签
我有一个包含客户数据的表格,如下所示:Python 找出最频繁的组合并添加标签,python,pandas,group-by,frequency,pandas-groupby,Python,Pandas,Group By,Frequency,Pandas Groupby,我有一个包含客户数据的表格,如下所示: Customer Price AAA 100 AAA 100 AAA 200 BBB 100 BBB 220 BBB 200 BBB 200 我想做的是找出条件价格数>=200大于价格数=200.sum()>(g['Price'].5”的方式,只有当有更多的真实值时才会发生Falses@piRSq
Customer Price
AAA 100
AAA 100
AAA 200
BBB 100
BBB 220
BBB 200
BBB 200
我想做的是找出条件价格数>=200大于价格数<200
的客户,并为他们添加标签。
例如:
Customer LABELS
AAA FALSE
BBB TRUE
对这个问题有什么想法吗
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
直截了当的回答:
df.groupby('Customer').apply(
lambda g: (g['Price'] >= 200).sum() > (g['Price'] < 200).sum()
)
df.groupby('Customer')。应用(
lambda g:(g['Price']>=200.sum()>(g['Price']<200.sum())
)
对布尔向量求和将返回
True
值的数目。这是一个非常好的解决方案。您好,谢谢您的想法。这是一个很好的方法。只有一个关于gt()函数的问题。你能告诉我用5来表示gt()的原因吗?@YamPakChing这是另一种写“>.5”的方式,只有当有更多的真实值时才会发生Falses@piRSquared太棒了。我一直在关注你=)@YamPakChing我想ge
和gt
之间的区别在于以前的过滤器=>
和gt
只过滤
(我刚查过)。@Pirsquare非常感谢你的想法。谢谢,但这个解决方案在这种情况下不起作用。我认为我们必须比较价格的频率而不是价格的总和。结果不是你所期望的吗?我不是对价格求和,而是一个布尔向量,它计算价格高于或低于200的次数(即频率)。对不起,我再次尝试了你的想法。它确实有效,而且很容易理解。非常感谢你。