我有一个数据框:
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”对象的可调用属性“模式”,请尝试使用“应用”方法
答案 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