if-elif循环中出现错误

2024-10-05 17:46:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3列带有值,如果其中一列的值是另一列的两倍,则列表应附加索引

0 1 2 3 A 1 2 3 G 2 3 4 K 1 1 2 T 1 1 1

结果应该是[A,G,K]

我在下面的循环中遇到一个关键错误:

percentage = pd.concat([percent1, percent2, percent3], axis=1, join='inner')
percentage = percentage.reset_index()
AA= []
for i in range(0, len(percentage)):
    if percentage[1][i] == 2*percentage[2][i]:
        AA.append(percentage['index'][i])
    elif percentage[2][i] == 2*percentage[3][i]:
        AA.append(percentage['index'][i])
    elif percentage[1][i] == 2*percentage[3][i]:
        AA.append(percentage['index'][i])

Tags: 列表index错误关键aapdjoinelif
2条回答

错误是由列名称引起的。concat函数保持列名不变,此错误是由这些相同的列名引起的

实际错误的原因是在比较的右侧使用了第1、2和3列,但没有4列,只有3列。因此,此行:

elif percentage[1][i] == 2*percentage[3][i]:

…将在表达式的percentage[3]部分上引发KeyError(3)

不幸的是,我不知道如何解决这个问题,因为我不知道你的代码打算做什么,你也没有解释

最明显的猜测是您希望使用右侧的列0、1和2。但这只会给你一个空的列表,而不是…一个三行的列表,或者你想要的任何东西。而且,考虑到您在左边使用的是0、1和1列,而不是0、1和2列,我不确定猜测一开始有多明显

相关问题 更多 >