繁体   English   中英

如何找到字符串索引的行号?

[英]How do I find the row # of a string index?

我有一个数据框,其中索引不是数字而是字符串(特别是国家/地区名称),并且它们都是唯一的。 给定一个国家的名称,我如何找到它的行号(索引的“数字”值)?

我试过df[df.index == 'country_name'].index但这不起作用。

pd.Index.get_indexer

我们可以使用pd.Index.get_indexer来获取整数索引。

idx = df.index.get_indexer(list_of_target_labels)
# If you only have single label we can use tuple unpacking here.
[idx] = df.index.get_indexer([country_name])

注意: pd.Index.get_indexer获取一个列表并返回一个列表。 从 0 到 n - 1 的整数表示这些位置的索引与相应的目标值匹配。 目标中的缺失值用 -1 标记。

np.where

你也可以在这里使用np.where

idx = np.where(df.index == country_name)[0]

list.index

我们也可以在使用list.indexPd.Index转换为列表后使用pd.Index.tolist

idx = df.index.tolist().index(country_name)

我们可以使用Index.get_indexer

df.index.get_indexer(['Peru'])

[3]

或者我们可以根据RangeIndex的大小构建一个RangeIndex ,然后将其设置为子集:

pd.RangeIndex(len(df))[df.index == 'Peru']

Int64Index([3], dtype='int64')

由于我们只查找单个标签并且索引“都是唯一的”,因此我们也可以使用Index.get_loc

df.index.get_loc('Peru')

3

示例数据帧:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5]
}, index=['Bahamas', 'Cameroon', 'Ecuador', 'Peru', 'Japan'])

df

          A
Bahamas   1
Cameroon  2
Ecuador   3
Peru      4
Japan     5

为什么不使用数字而不是文本创建索引? 因为您的 df 可以按字母顺序以外的多种方式排序,并且您可能会丢失行数。 使用编号索引这不会是一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM