使用索引键值调用DataFrame索引列表

时间:2017-10-03 13:18:14

标签: python-3.x pandas

i2=df.index['a':'c'].copy()

虽然我们可以通过指定如下行号来提取索引部分的副本:     I1 = df.index [1:3] .copy()

不幸的是,我们无法通过指定密钥来提取索引部分的副本(就像df.loc方法一样)。当我尝试以下内容时:

TypeError: slice indices must be integers or None or have an __index__ method

我收到以下错误:

import csv

data = []

with open('input.csv') as f_input:
    for row in csv.reader(f_input):
        data.append((row[5], float(row[4])))

gt_user = raw_input("Enter user you want to search for: ")
total = 0

for name, number in data:
    if gt_user == name:
        print "Found {}, number is {}".format(name, number)
        total += number

print "Total for {} is {}".format(gt_user, total)

是否可以根据其键调用索引的子集?谢谢

2 个答案:

答案 0 :(得分:2)

最简单的是loc i1 = df.loc['b':'c'].index print (i1) Index(['b', 'c'], dtype='object')

i1 = df.index

i1 = i1[i1.get_loc('b') : i1.get_loc('d') + 1]
print (i1)
Index(['b', 'c'], dtype='object')

或者可以使用get_loc作为职位:

i1 = i1[i1.get_loc('b') : i1.get_loc('d') + 1]
print (i1)
Index(['b', 'c', 'd'], dtype='object')
i1 = i1[i1.searchsorted('b') : i1.searchsorted('d') + 1]
print (i1)
Index(['b', 'c', 'd'], dtype='object')

替代:

.loc

答案 1 :(得分:1)

尝试使用i2 = df.loc['a':'c'].index print(i2) ,请参阅此documentation

Index(['a', 'b', 'c'], dtype='object')

输出:

df.loc['a':'c'].index.tolist()

['a', 'b', 'c']

输出:

ON()