我有一个包含几百万行的 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"]
,但停在第一场比赛。
如果总是有第一个值用于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)
归档时间: |
|
查看次数: |
3083 次 |
最近记录: |