如何切片标记的索引+ 1,python?

时间:2018-02-22 09:38:42

标签: python pandas indexing

df = pd.DataFrame([1,2,3],['a','b','c'])
print(df)
   0
a  1
b  2
c  3

df.loc('a')
0    1
Name: a, dtype: int64

但是现在我想获得b(2)的值,只是尝试使用不起作用的df.loc('a'+ 1 )。如果b未知,但在a之后,如何解决此问题?如果你想要df.loc('a'+ 1 :)怎么办?

2 个答案:

答案 0 :(得分:1)

您需要get_loc个职位,然后按iat选择:

def get_next(val):
    return min(df.index.get_loc(val) + 1, len(df.index) - 1)

print (get_next('a'))
1
print (get_next('b'))
2
print (get_next('c'))
2

print (df.iat[get_next('a'), 0])
2
print (df.iat[get_next('b'), 0])
3
print (df.iat[get_next('c'), 0])
3

答案 1 :(得分:1)

try / except是一个pythonic解决方案。使用iat进行快速整数查找。

df = pd.DataFrame([1,2,3], ['a','b','c'])

try:
    idx = df.index.get_loc('a') + 1
except IndexError:
    idx = len(df.index)

idx
# 1

df.iat[idx, 0]
# 2