Pandas 有效地搜索匹配条件的第一行

Nak*_*euh 6 python pandas

我有一个包含几百万行的 Pandas DataFrame。我想根据条件从行中选择一个值C

我有以下正在运行的代码:

all_matches= df.loc[C, "column_name"]
first_match = next(iter(all_matches), 'no match')
Run Code Online (Sandbox Code Playgroud)

问题是它的效率极低。我想知道如何做类似的事情df.loc[C, "column_name"],但停在第一场比赛。

jez*_*ael 4

如果总是有第一个值用于Series.iat快速获取第一个值:

df.loc[C, "column_name"].iat[0]
Run Code Online (Sandbox Code Playgroud)

或者:

df.loc[C, "column_name"].values[0]
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是改变这个

df = pd.DataFrame({'column_name':['a','b','va'],
                   'col':[1,2,3]})
from numba import njit

@njit
def get_first_val_nb(A, B, k):
    for i in range(len(A)):
        if A[i] > k:
            return B[i]
    return 'no match'

A = df['col'].values
B = df['column_name'].values

idx = get_first_val_nb(A,B, 2)
print (idx)
va
Run Code Online (Sandbox Code Playgroud)