Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找出最频繁的组合并添加标签_Python_Pandas_Group By_Frequency_Pandas Groupby - Fatal编程技术网

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的次数(即频率)。对不起,我再次尝试了你的想法。它确实有效,而且很容易理解。非常感谢你。