Pandas技术问题:设置索引标签后无法用loc访问数据
问题根源
你调用df.set_index('country')时,并没有修改原DataFrame。Pandas的多数方法默认返回一个新的对象,而不会改动原数据——你看到的输出是该方法返回的新DataFrame,但原df的索引仍然是默认的数字序列,所以用loc['usa']会触发KeyError。
解决方案
有两种方式可以解决这个问题:
- 重新赋值给原变量:将
set_index返回的新DataFrame覆盖原dfdf = df.set_index('country') # 此时可以正常查询 df.loc['usa'].forex - 使用
inplace=True参数:直接在原DataFrame上修改索引df.set_index('country', inplace=True) df.loc['usa'].forex
修改完成后,df.index会变为country列的取值,此时loc就能通过文本标签正确定位到目标行。
内容的提问来源于stack exchange,提问作者Plantigrade
相关产品推荐
相关产品推荐

