为此数据框
values ii
0 3.0 4
1 0.0 1
2 3.0 8
3 2.0 5
4 2.0 1
5 3.0 5
6 2.0 4
7 1.0 8
8 0.0 5
9 1.0 1
此行返回“必须处理汇总值
bii2=df.groupby(['ii'])['values'].agg(pd.Series.mode)
此行有效
bii3=df.groupby('ii')['values'].agg(lambda x: pd.Series.mode(x)[0])
你能解释为什么吗?
答案 0 :(得分:3)
问题是mode
有时返回2个或更多值,请用GroupBy.apply
检查解决方案:
bii2=df.groupby(['ii'])['values'].apply(pd.Series.mode)
print (bii2)
ii
1 0 0.0
1 1.0
2 2.0
4 0 2.0
1 3.0
5 0 0.0
1 2.0
2 3.0
8 0 1.0
1 3.0
Name: values, dtype: float64
并且熊猫agg
在输出中需要标量,因此返回错误。因此,如果选择第一个值,则效果很好
bii3=df.groupby('ii')['values'].agg(lambda x: pd.Series.mode(x).iat[0])
print (bii3)
ii
1 0.0
4 2.0
5 0.0
8 1.0
Name: values, dtype: float64