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

如何优雅结合Pandas的.loc与.iloc选择特定行和列?

解决方案

当然有更简洁优雅的方式,你可以一步完成行与列的选择,同时避免链式索引可能带来的潜在问题(比如SettingWithCopyWarning)。

方法1:用iloc结合列位置索引(推荐)

直接通过df.columns.get_indexer()将目标列名转换为位置索引,再配合iloc选中指定行:

df.iloc[2:4, df.columns.get_indexer(['id', 'person'])]
  • iloc[2:4]精准选中位置索引为2、3的行(Pandas切片遵循左闭右开规则)
  • df.columns.get_indexer(['id', 'person'])把列名映射为对应的位置索引,确保选中id和person列

方法2:结合loc与iloc的写法

如果一定要同时用到loc和iloc,可以先通过iloc获取目标行的索引标签,再用loc选择列:

df.loc[df.iloc[2:4].index, ['id', 'person']]

不过这种写法逻辑绕弯,不如第一种方式简洁高效。

原写法的问题

你之前用的df.loc[:, ['id', 'person']][2:4]属于链式索引,Pandas无法明确返回的是原DataFrame的视图还是副本,后续如果对结果做修改,可能出现意料之外的行为,一步到位的写法能规避这个风险。

内容的提问来源于stack exchange,提问作者equanimity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:03:16