簡體   English   中英

在 python 函數中使用 2 個異常

[英]Use 2 exceptions in a python function

我想編寫一個函數來計算按數據幀分組的列的模式。 如果組的值沒有眾數,第一個例外:計算中位數,如果組的值都是空值,第二個例外:什么都不做。 示例數據框如下所示:

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)

這引發了這個錯誤:

語法錯誤:默認 'except:' 必須是最后一個

最終的輸出應該是這樣的:

在此處輸入圖片說明

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM