You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于浮点型索引值而非位置查询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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:51:19