首页 > 解决方案 > KeyError: ('var1', '发生在索引 16')

问题描述

我在以下代码行收到这个奇怪的错误消息:KeyError: ('var1', 'occured at index 16')

df['var1'] = df.apply(lambda row: (row['var1']*row['var2']), axis = 1)

我将 df DataFrame 的 2 列相乘。并且16 in df.indexTrue。我可以正常访问第 16 行。如果我删除该行,错误仍然存​​在。

对此有什么想法吗?

编辑:根据要求,数据样本:

             X        var1                          Y \
0    US4642867729  22.3052  Korea; Republic (S. Korea)
1    US4642867729   5.9139  Korea; Republic (S. Korea)
2    US4642867729   3.0799  Korea; Republic (S. Korea)
3    US4642867729   2.9647  Korea; Republic (S. Korea)
4    US4642867729   2.5798  Korea; Republic (S. Korea)
5    US4642867729   2.5281  Korea; Republic (S. Korea)
6    US4642867729   2.3359  Korea; Republic (S. Korea)
7    US4642867729   2.2434  Korea; Republic (S. Korea)
8    US4642867729   1.8624  Korea; Republic (S. Korea)

                          W             Z     \
0    Information Technology  US4642867729
1    Information Technology  US4642867729
2                 Materials  US4642867729
3               Health Care  US4642867729
4    Information Technology  US4642867729
5                Financials  US4642867729
6    Consumer Discretionary  US4642867729
7                Financials  US4642867729
8                 Materials  US4642867729

                                                  var2
0    0.16258420849834973043179786600376246497035026...
1    0.16258420849834973043179786600376246497035026...
2    0.16258420849834973043179786600376246497035026...
3    0.16258420849834973043179786600376246497035026...
4    0.16258420849834973043179786600376246497035026...
5    0.16258420849834973043179786600376246497035026...
6    0.16258420849834973043179786600376246497035026...
7    0.16258420849834973043179786600376246497035026...
8    0.16258420849834973043179786600376246497035026...

谢谢你的时间!

标签: python-3.xapply

解决方案


如果您只是想将两列相乘并将结果存储在第一列中,您可以使用比使用applyand更简单的解决方案来解决这个问题lambda

df['var1'] *= df['var2']

推荐阅读