如何查找pandas DataFrame中字符串索引对应的行号
Pandas 字符串索引获取对应行号的解决方案
你之前的写法返回的是匹配到的索引值本身,而非索引对应的行位置序号,因此无法满足需求。针对索引唯一的场景,最高效的实现方式如下:
方法1:直接使用Index.get_loc()(推荐)
Pandas的Index对象原生提供了get_loc()方法,用于返回指定值对应的位置序号:
row_pos = df.index.get_loc('your_country_name')
返回的row_pos就是从0开始计数的行号,完全符合你的需求。
方法2:兼容重复索引的通用写法
如果后续遇到索引存在重复值的场景,可以使用numpy.where实现:
import numpy as np # 返回所有匹配项的行号数组 row_pos_list = np.where(df.index == 'your_country_name')[0] # 索引唯一的场景直接取第一个元素即可 row_pos = row_pos_list[0]
测试示例
你可以用以下测试代码验证效果:
import pandas as pd # 构造测试数据 df = pd.DataFrame( data={'population': [330, 1411, 125, 67]}, index=['USA', 'China', 'Japan', 'UK'] ) print(df.index.get_loc('Japan')) # 输出结果为 2,和实际行位置一致
内容的提问来源于stack exchange,提问作者jros112
相关产品推荐
相关产品推荐

