如何基于浮点型索引值而非位置查询DataFrame数据?
基于索引值提取Pandas DataFrame行的方法
当然可以!在Pandas中,我们完全可以跳过基于位置的iloc,直接通过**索引值(标签)**来提取目标行,这里给你几种实用的方案,结合你的DataFrame示例来演示:
先回顾下你的原始DataFrame:
a b c d e index 0 -202 -236 135 -178 -186 8 -139 -102 112 -100 -112 10 -77 -33 89 -22 -37 18 -16 35 62 46 26 20 45 67 36 114 90
方法1:使用loc[](最推荐)
loc是Pandas专门为标签/索引值查询设计的工具,用法非常直观:
- 提取单个索引值的行:
df.loc[8] - 提取多个索引值的行:传入索引值列表
df.loc[[8, 18]]
运行df.loc[[8, 18]]后,你会得到:
a b c d e index 8 -139 -102 112 -100 -112 18 -16 35 62 46 26
这个方法不仅高效,还支持后续的列筛选(比如df.loc[[8,18], ['a', 'c']]可以同时指定行和列),是日常处理的首选。
方法2:使用query()方法
如果需要更灵活的条件查询(比如结合其他列的条件),可以用query(),通过字符串表达式指定索引条件:
df.query("index in [8, 18]")
运行后得到的结果和上面完全一致,这种写法在复杂逻辑下可读性更强。
方法3:使用reindex()
reindex()可以重新构建DataFrame的索引,传入目标索引值列表即可提取对应行:
df.reindex([8, 18])
需要注意的是,如果传入的索引值在原DataFrame中不存在,reindex()会返回对应行的NaN值,这点和loc不同(loc遇到不存在的索引会报错)。
总结一下,loc[]是最直接且高效的选择,完全满足你基于索引值提取行的需求,不需要依赖任何位置相关的操作~
内容的提问来源于stack exchange,提问作者user9454050
相关产品推荐
相关产品推荐

