在python中groupby时获取聚合函数Mode2[重复]

问题描述 投票:0回答:1

美好的一天!

我正在尝试在 groupby 时计算模式 2(第二个最重复的值)。我对于计算模式 1 没有任何问题,但相同的逻辑不适用于模式 2。

grouped_df_multiple = fact_price_pt.groupby(['COD_BANDERA', 'des_product', 'dat_price'], as_index = False).agg({
'calc_pvp': ['mean', 'min', 'max', lambda x: x.mode().iloc[0] ,lambda x: x.mode().iloc[0]],
'DES_BANDERA': ['max']})

我尝试过获取 mode() 结果的第二个值,如下所示:

lambda x: x.mode().iloc[1]

lambda x: x.value_counts(ascending=True).index[1]

但是不起作用,显示下一条消息:

IndexError:索引 1 超出尺寸为 1 的轴 0 的范围

我该怎么办?有什么解决办法吗?

谢谢!

python pandas dataframe
1个回答
0
投票

您可以使用自定义函数返回第 n 个节点(如果存在):

def get_nth_mode(s, n=0):
    modes =  s.mode()
    return modes.iloc[n] if n < len(modes) else None

然后在你的

groupby

.agg([lambda x: get_nth_mode(x, n=1)])
© www.soinside.com 2019 - 2024. All rights reserved.