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 :)
怎么办?
答案 0 :(得分:1)
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