尝试除一个以上的情况

2024-05-06 16:23:52 发布

您现在位置: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))

2条回答

您可以夹紧到列的大小,以确保不尝试访问太多的元素

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

另一个建议的解决方案更好,但如果您对所问的特定问题感到好奇,以下是您将如何使用多个try例外:

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

相关问题 更多 >