用于此 Dataframe
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])
你能解释一下为什么吗?
2条答案
按热度按时间busg9geu1#
问题是
mode
有时会返回2个或更多值,请使用GroupBy.apply
检查解决方案:而pandas
agg
的输出需要标量,所以返回错误。所以如果选择第一个值,它工作得很好bqf10yzr2#
正如@jezrael所指出的,
mode
有时会返回多个值。所以你可以尝试这样做:对于
.to_list()
部分,对于ii的每个值,你都会得到一个列表,而不仅仅是一个值。你应该得到这样的结果: