美好的一天!
我正在尝试在 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 的范围
我该怎么办?有什么解决办法吗?
谢谢!
您可以使用自定义函数返回第 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)])