我有两个数据帧:df1和df2。我使用iterrows迭代df1,对于每一行中的特定字段,我在df2中查找与该字段匹配的行,并尝试以标量格式从df2中的该行中提取相应的值。每次我尝试这样做,最终都会得到另一个数据帧或序列,但我不能将该值用作标量。这是我最近的尝试:
for index, row in df1.iterrows():
a = row[0]
b = df2.loc[(df2['name'] == a ), 'weight']
c = row[1] - b #this is where error happens
df1.set_value(index,'wtdif',c)
我得到了一个错误,因为在这个例子中'b'不是标量,如果我把它打印出来,这是它的一个例子。这里的'24'是它在df2中找到的行的索引。另一个令人困惑的地方是,我不能以任何方式索引“b”,即使它是一个序列(例如,b[0]创建了一个错误,b['weight']也是如此)
^{pr2}$
您得到了一个错误,因为
b
中的唯一索引是24。你可以使用这个或者(更容易)使用位置索引对于新熊猫用户来说,这是一个常见的问题。从序列或数据帧中提取数据时,索引将被保留。一般来说,它们不是从0->;N-1运行,其中N是序列的长度或数据帧中的行数。在
这会有点帮助,尽管我承认一开始也让我感到困惑。在
嗯,当我对我的代码进行更改时,我仍然得到“IndexError:single positional indexer is outbounds”。在
你的建议很有道理,也很管用,谢谢你的发帖。我写了一个快速测试脚本来验证修复,它确实起到了很好的作用。我会把代码贴在这里,以防有人好奇。在
我在这里遗漏了一些东西,我只需要继续研究到底是什么错了,我的下一个问题应该是什么。。。在
相关问题 更多 >
编程相关推荐