попробуйте, за исключением нескольких ситуаций

#python #dataframe #conditional-statements #try-except #except

#python #фрейм данных #условные операторы #попробуйте-кроме #кроме #попробуйте-за исключением #за исключением

Вопрос:

У меня есть набор столбцов, включающий данные. Мне нужна сумма из 3 самых больших компонентов. Проблема в том, что в некоторых столбцах у меня есть только 2 или 1 данные. Поэтому мне нужно использовать try и except, чтобы сохранить мой код живым. Также в столбцах с 2 данными мне нужна их сумма, а с 1 данными мне это нужно. Как я должен изменить этот код? Заранее спасибо.

 for i in df.index.unique():
    dff=df.loc[i]
    colum=dff['CENSUS2010POP']
    try:
        ss=sum(colum.nlargest(3))
    except:
        ss=sum(colum.nlargest(2))
    except:
        ss=sum(colum.nlargest(1))
  

Комментарии:

1. Возможно, вы захотите предоставить реальную выборку данных, которые выдают ошибку, и всю обратную трассировку ошибки.

Ответ №1:

Вы могли бы просто ограничить размер столбца, чтобы убедиться, что вы не пытаетесь получить доступ к слишком большому количеству элементов

 ss = sum(colum.nlargest(min(3, colum.size)))
  

Комментарии:

1. Спасибо. Я узнал кое-что новое. Проблема не решилась и с этим. Я, наконец, выяснил, что для столбцов с 1 компонентом метод nlargest создает проблему. Я решил проблему. Еще раз спасибо.

Ответ №2:

Другое предлагаемое решение лучше, но если вам интересен конкретный вопрос, который вы задали, вот как вы могли бы использовать несколько исключений при попытке:

 for i in df.index.unique():
    dff=df.loc[i]
    colum=dff['CENSUS2010POP']
    try:
        ss=sum(colum.nlargest(3))
    except:
        try:
            ss=sum(colum.nlargest(2))
        except:
            ss=sum(colum.nlargest(1))