如何在DataFrame分组计算众数时忽略指定的unknown值?
解决方案
要实现分组计算众数时忽略salary列中的"unknown",可以自定义聚合函数先过滤该值再计算众数,具体代码如下:
首先定义过滤后求众数的函数:
def mode_ignore_unknown(x): # 过滤掉"unknown"值 filtered_data = x[x != "unknown"] # 如果过滤后无数据,返回默认值(可根据需求调整) if filtered_data.empty: return "unknown" # 返回过滤后的众数,取第一个结果(处理多众数情况) return pd.Series.mode(filtered_data)[0]
然后按分组应用不同的聚合逻辑:
emp = df_1.groupby('company').agg({ 'employee': lambda x: pd.Series.mode(x)[0], 'salary': mode_ignore_unknown, 'compartment': lambda x: pd.Series.mode(x)[0] })
这样处理后,company B的salary列会返回8而不是"unknown"。对于employee和compartment列,依然保留原有的众数计算逻辑。
内容的提问来源于stack exchange,提问作者GALAXY A50
相关产品推荐
相关产品推荐

