如何通过iloc定位的元素获取其对应的行索引(loc/行名)?
解决方法
pandas的Index对象本身支持按位置下标取值,你已知行位置的话,直接对a.index用下标取对应位置即可。
1. 核心实现代码
你要获取行位置为n的行标签,直接调用:
# n为你已知的行位置,比如示例中的0 row_label = a.index[n] # 要存入列表的话可以直接用以下两种写法 row_label_list = [a.index[n]] # 如果你需要和布尔筛选相同的values格式输出,用: row_label_values = a.index[[n]].values
2. 错误原因说明
你之前写的a.iloc[0,0].index无法生效,是因为a.iloc[0,0]返回的是单元格对应的单个标量值(比如数字、字符串等),不是pandas的Series/DataFrame对象,本身没有index属性,所以调用会报错。
如果你通过.iloc取的是整行数据(返回Series对象),也可以通过Series的name属性拿到行标签:
# 取行位置为0的整行,再拿行标签 row_label = a.iloc[0].name
示例效果
假设你的DataFrame结构如下:
| 行标签 | tpep_pickup_datetime | 其他列 |
|---|---|---|
| 1024 | 2015-01-01 00:35:38 | xxx |
| 2048 | 2015-01-01 01:12:09 | xxx |
行位置0对应的行标签为1024,调用a.index[0]直接返回1024,a.index[[0]].values返回array([1024], dtype=int64),和你之前布尔筛选拿到的输出格式完全一致。
内容的提问来源于stack exchange,提问作者Paloma Fernandez
相关产品推荐
相关产品推荐

