在python函数中使用2个异常

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

我想编写一个函数来计算按数据帧分组的列的模式。如果组的值不是模式,则第一个例外:计算中位数;如果组的值均为空值,则第二个例外:不执行任何操作。示例数据帧如下所示:

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:默认'except:'必须是最后一个

最终输出应该是这样的:

enter image description here

python median mode try-except
1个回答
1
投票

您需要第二个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 

0
投票

您需要第二个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 
© www.soinside.com 2019 - 2024. All rights reserved.