按列索引获取值,其中行是特定值

我有一个数据框 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。如果我不想进入列名,我必须使用索引。我的问题是,如果我的方法太复杂了。 它有效,但似乎太多了,而且不是很pythonic:



age = sheet_overview.iloc[

                    sheet_overview[

                        sheet_overview.iloc[:, 1] == '1. 2.']

                        .index[0], 3]


catspeake
浏览 265回答 1
1回答

一只名叫tom的猫

添加values用于过滤器的 numpy 数组iloc,然后next用于返回第一个匹配的值 - 如果不存在获取missing:a = sheet_overview.iloc[(sheet_overview.iloc[:, 1] == '1. 2.').values, 3]a = next(iter(a), 'missing')print (a)23如果性能很重要,请使用numba:from numba import njit@njitdef 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.')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python