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

如何通过行号与列标题在Pandas DataFrame中高效取值?

结合行号与列标题在Pandas DataFrame中取值的最简方法

嘿,这个场景我日常用Pandas的时候经常碰到!要同时用**行号(位置索引)和列标题(标签索引)**获取值,其实有几个简洁又实用的方法,我结合示例给你讲清楚:

首先先搭个示例DataFrame方便演示:

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 
        'Age': [25, 30, 35], 
        'City': ['NYC', 'LA', 'Chicago']}
df = pd.DataFrame(data)

方法1:最直观的链式写法(仅取值推荐)

直接先用iloc定位行号,再通过列标题取值:

# 获取第1行(行号从0开始)的'Age'列值
df.iloc[1]['Age']  # 输出:30

这个写法最简洁易懂,但要注意:如果后续要对这个位置赋值,可能会触发SettingWithCopyWarning——因为链式索引返回的可能是原DataFrame的视图而非副本,所以仅用来取值的话完全没问题。

方法2:安全稳妥的loc结合索引转换(赋值/取值都适用)

通过df.index[row_num]把行号转换成对应的行标签,再用loc结合列标题定位:

# 同样获取第1行的'Age'列值
df.loc[df.index[1], 'Age']  # 输出:30

这个方法完全符合Pandas的标签定位逻辑,不会有链式索引的隐患,不管是取值还是后续修改值都很安全,也是我个人日常用得最多的写法之一。

方法3:单元素快速访问的at方法

如果只是针对单个元素的取值/赋值,at方法效率更高,语法也简洁:

df.at[df.index[1], 'Age']  # 输出:30

at是Pandas专门为单个元素访问优化的方法,比loc在单元素操作上更快,适合频繁的单值访问场景。

总结

  • 仅需取值时:df.iloc[row_num][col_name]最简洁直观;
  • 需要兼顾赋值安全或更规范的写法:df.loc[df.index[row_num], col_name]或df.at[df.index[row_num], col_name]更稳妥。

内容的提问来源于stack exchange,提问作者Daniel Slätt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:59