如何获取pandas.Series或pandas.DataFrame中第i项的索引?
How to get the index of ith item in pandas.Series or pandas.DataFrame?
我正在尝试获取 Series
中第 6 项的索引。
这是头部的样子:
United States 1.536434e+13
China 6.348609e+12
Japan 5.542208e+12
Germany 3.493025e+12
France 2.681725e+12
为了获取第 6 个索引名称(排序后的第 6 个国家/地区),我通常使用 s.head(6)
并从那里获取第 6 个索引。
s.head(6)
给我:
United States 1.536434e+13
China 6.348609e+12
Japan 5.542208e+12
Germany 3.493025e+12
France 2.681725e+12
United Kingdom 2.487907e+12
看看这个,我得到的索引是英国。
那么,除了这个,还有什么更好的获取索引的方法吗?而且,对于数据框,是否有任何函数可以在排序后根据相应的列获取第 6 个索引。
如果它是一个数据框,我通常会排序,创建一个名为索引的新列,并使用 reset_index
,然后使用 iloc
属性获取第 6 个(因为它将使用重置后索引中的范围)。
使用 pd.Series
和 pd.DataFrame
有更好的方法吗?
你可以直接从索引中得到它
s.index[5]
或
s.index.values[5]
这完全取决于您的考虑better
。我可以告诉你 numpy
方法可能会更快。
例如。 numpy.argsort
returns 一个数组,其中数组中的第一个元素是被排序数组中应该排在第一位的位置。 argsort 的 return 数组中的第二个元素是被排序数组中应该排在第二位的元素的位置。依此类推。
这样就可以得到第6项排序后的索引值
s.index.values[s.values.argsort()[5]]
或者更透明
s.sort_values().index[5]
或更有创意
s.nsmallest(6).idxmax()
我正在尝试获取 Series
中第 6 项的索引。
这是头部的样子:
United States 1.536434e+13
China 6.348609e+12
Japan 5.542208e+12
Germany 3.493025e+12
France 2.681725e+12
为了获取第 6 个索引名称(排序后的第 6 个国家/地区),我通常使用 s.head(6)
并从那里获取第 6 个索引。
s.head(6)
给我:
United States 1.536434e+13
China 6.348609e+12
Japan 5.542208e+12
Germany 3.493025e+12
France 2.681725e+12
United Kingdom 2.487907e+12
看看这个,我得到的索引是英国。
那么,除了这个,还有什么更好的获取索引的方法吗?而且,对于数据框,是否有任何函数可以在排序后根据相应的列获取第 6 个索引。
如果它是一个数据框,我通常会排序,创建一个名为索引的新列,并使用 reset_index
,然后使用 iloc
属性获取第 6 个(因为它将使用重置后索引中的范围)。
使用 pd.Series
和 pd.DataFrame
有更好的方法吗?
你可以直接从索引中得到它
s.index[5]
或
s.index.values[5]
这完全取决于您的考虑better
。我可以告诉你 numpy
方法可能会更快。
例如。 numpy.argsort
returns 一个数组,其中数组中的第一个元素是被排序数组中应该排在第一位的位置。 argsort 的 return 数组中的第二个元素是被排序数组中应该排在第二位的元素的位置。依此类推。
这样就可以得到第6项排序后的索引值
s.index.values[s.values.argsort()[5]]
或者更透明
s.sort_values().index[5]
或更有创意
s.nsmallest(6).idxmax()