计算聚合模式

时间:2018-08-03 12:19:25

标签: python pandas

我有一个数据框:

ID CATEGORY AMOUNT
1   T1       1000
2   T2       1500
3   T3       2000
4   T4       3000
5   T1       2000
6   T2       2500
7   T3       7000
8   T4       4000
9   T1       1000
10   T2      1500
11   T3      2000
12   T4      3000 

我要groupby类别,然后获取每个类别的模式:

T1 1000
T2 1500

一直到T4。当我运行以下python代码时,出现错误:

df['AMOUNT'].groupby(df['CATEGORY']).mode()

我收到以下错误

  

AttributeError:无法访问“ SeriesGroupBy”对象的可调用属性“模式”,请尝试使用“应用”方法

3 个答案:

答案 0 :(得分:0)

您需要对整个数据帧进行分组,然后应用mode函数:

df.groupby(['CATEGORY'])['AMOUNT'].apply(lambda x: x.mode()[x.mode().index[-1]])

答案 1 :(得分:0)

我认为您需要:

df.groupby('CATEGORY')['AMOUNT'].agg(lambda x:x.value_counts().index[0])

答案 2 :(得分:0)

尝试使用mode模块中的statistics函数:

from statistics import mode
result = df.groupby('CATEGORY')['AMOUNT'].aggregate(lambda x : mode(x))
print(result)

#    CATEGORY
# T1    1000
# T2    1500
# T3    2000
# T4    3000