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

时间:2018-11-14 08:38:22

标签: python python-3.x pandas

我有一个数据框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]

1 个答案:

答案 0 :(得分:3)

为numpy数组添加values,用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

@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.')