簡體   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