我在以下代码行上收到此奇怪的错误消息: KeyError:('var1','出现在索引16'):
df['var1'] = df.apply(lambda row: (row['var1']*row['var2']), axis = 1)
我将df DataFrame的2列相乘。 16 in df.index
是True
。我可以正常访问第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...
感谢您的时间!
答案 0 :(得分:0)
如果您只想将两列相乘并将结果存储在第一列中,则可以使用比使用apply
和lambda
更为简单的解决方案来解决此问题:
df['var1'] *= df['var2']