我有一個(gè)數(shù)據(jù)框 sheet_overview: Unnamed: 0 Headline Unnamed: 2 Unnamed: 3 0 nan 1. 1. username Erik 1 nan 1. 2. userage 23 2 nan 1. 3. favorite ice我想通過在第二列中查找“ 1. 2. ”來獲得值23。如果我不想進(jìn)入列名,我必須使用索引。我的問題是,如果我的方法太復(fù)雜了。 它有效,但似乎太多了,而且不是很pythonic:age = sheet_overview.iloc[ sheet_overview[ sheet_overview.iloc[:, 1] == '1. 2.'] .index[0], 3]
1 回答

一只名叫tom的貓
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
添加values用于過濾器的 numpy 數(shù)組iloc,然后next用于返回第一個(gè)匹配的值 - 如果不存在獲取missing:
a = sheet_overview.iloc[(sheet_overview.iloc[:, 1] == '1. 2.').values, 3]
a = next(iter(a), 'missing')
print (a)
23
如果性能很重要,請(qǐng)使用numba:
from numba import njit
@njit
def first_val(A, k):
a = A[:, 0]
b = A[:, 1]
for i in range(len(a)):
if a[i] == k:
return b[i]
return 'missing'
a = first_val(sheet_overview.iloc[:, [1,3]].values, '1. 2.')
添加回答
舉報(bào)
0/150
提交
取消