我试图连接几个变量并计算总和,因为我想做多个操作,我正在迭代已经保存在df.cols中的所有可能的变量组合,但是我得到了关键错误。
for i in df.cols[0:20]:
k+=1
name = "cat" + str(k)
df1[name] = df1.loc[:, i].sum(axis = 1)
它给出了KeyError,尽管它在列中。
KeyError: "the label [['D120_1', 'Y69_0', 'K189_0']] is not in the [columns]"
例如,当我尝试打印i时:
print(i)
['D120_1', 'Y69_0', 'K189_0']
当我在没有迭代的情况下尝试使用['D120_1','Y69_0','K189_0']替换i时,效果很好。为什么它会识别迭代内部的关键,并且在迭代之外无法识别它。
虽然与迭代中的内容相同,但效果很好。
df1["col1"] = df1.loc[:, ['D120_1', 'Y69_0', 'K189_0']].sum(axis = 1)
但这不起作用:
df1["col1"] = df1.loc[:, i].sum(axis = 1)
答案 0 :(得分:0)
如果在Pandas中正确记住,切片中都包含start和stop索引,而不是Python跳过最后一个索引的方式。看看这是否是您的问题的根源 - 您可能正在迭代到不可用的索引(标签)。
答案 1 :(得分:0)
实际上,我发现列表保存为字符串“['D120_1','Y69_0','K189_0']”
要解决我使用ast.literal_eval
的问题from ast import literal_eval
i = literal_eval(i)
print(i)
['D120_1', 'Y69_0', 'K189_0']