我想编写一个函数来计算按dataframe分组的列的模式。如果组的值没有模式,则第一个异常:计算中间值,如果组的值都为空值,则第二个例外:不做任何事情。示例数据文件如下所示:
dataframe = pd.DataFrame({'b':['b1','b1','b1','b1','b1','b1','b2','b2','b2','b2','b2','b2','b3','b3','b3'],'d':[0.1,None,0.12,None,None,0.13,1,2,1,1,None,None,None,None,None]})其职能如下:
def fill_mode(group):
try:
group['mode'] = mode(group['d'])
except:
not_nulls = group[~group['d'].isnull()]
group['mode'] = median(not_nulls['d'])
except:
pass
return group 应用功能如下所示:
dataframe = dataframe.groupby('b').apply(fill_mode)这将引发此错误:
SyntaxError:默认值‘除了:’必须是最后一个
最后的输出应该如下所示:

发布于 2020-03-07 14:45:25
您需要第二个try/except块。
def fill_mode(group):
try:
group['mode'] = mode(group['d'])
except:
try:
not_nulls = group[~group['d'].isnull()]
group['mode'] = median(not_nulls['d'])
except:
pass
return group https://stackoverflow.com/questions/60578651
复制相似问题