在pandas dataframe中将索引作为int

时间:2018-06-12 10:03:44

标签: python pandas

我有一个由字符串索引的pandas数据帧。让我们说我的索引看起来像df.index = ['AA','AB','AC',...],我想访问df.loc['AC':'AE'],效果很好。

有没有办法获得这些指数的位置,给我['AC':'AE'] => [2,3,4]?我知道有df.index.get_loc('AC') => 2但这只适用于单个值,而不适用于列表。

2 个答案:

答案 0 :(得分:2)

使用:

df = pd.DataFrame({'a': [5,6,7,8, 10]}, index=['AA','AB','AC','AD','AE'])

pos = list(range(df.index.get_loc('AC'), df.index.get_loc('AE') + 1))
print (pos)
[2, 3, 4]

Index.searchsorted的其他解决方案:

pos = list(range(df.index.searchsorted('AC'), df.index.searchsorted('AE') + 1))
print (pos)
[2, 3, 4]
a = df.index.searchsorted(['AC', 'AE'])
pos = list(range(a[0], a[1] + 1))
print (pos)
[2, 3, 4]

答案 1 :(得分:1)

您可以定义一个函数来提取整数范围:

df = pd.DataFrame(np.arange(7), index=['AA','AB','AC','AD','AE','AF','AG'])

def return_index(df, a, b):
    col_map = df.index.get_loc
    return np.arange(col_map(a), col_map(b)+1)

res = return_index(df, 'AC', 'AE')

print(res)

array([2, 3, 4])