#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))