基于条件获取Python中的第一行数据帧,而不迭代整个数据帧

基于条件获取Python中的第一行数据帧,而不迭代整个数据帧,python,pandas,Python,Pandas,假设我想要获取数据帧的第一行,其中某列具有负值: import pandas as pd df = pd.DataFrame(columns=['c'],data=[[2.4,2.3,-1.0]]) index = df.loc[df['c'] < 0].index[0] 将熊猫作为pd导入 df=pd.DataFrame(列=['c'],数据=[[2.4,2.3,-1.0]]) index=df.loc[df['c']

假设我想要获取数据帧的第一行,其中某列具有负值:

import pandas as pd
df = pd.DataFrame(columns=['c'],data=[[2.4,2.3,-1.0]])
index = df.loc[df['c'] < 0].index[0]
将熊猫作为pd导入
df=pd.DataFrame(列=['c'],数据=[[2.4,2.3,-1.0]])
index=df.loc[df['c']<0]。索引[0]

现在可以了,但如果我有一个包含数百万行的数据帧,我不想迭代所有行来获取索引。有没有一种不必在每一行上循环就能得到索引的方法?(会很慢)

您可以检查给定列中的哪些行是带负数的,并用于获取第一个
真值的索引:

df = pd.DataFrame(columns=['c'],data=[2.4,2.3,-1.0])
print(df)
    c
0  2.4
1  2.3
2 -1.0

df.c.lt(0).idxmax()
# 2

不,OP需要有效的解决方案,所以我想dupe是正确的。嗯,是的,他提到df有数百万行@jezrael@yatu-没错,这是关闭的唯一原因,否则就不是了。您的解决方案很好。df.c.lt(0)不是在应用idxmax()之前计算每一行吗?是的,它对布尔结果@zacharyryansmith执行搜索如果df.c.lt(0)计算每一行,它比
index=df.loc[df['c']<0].index[0]
更好吗?因为idxmax返回第一个true。df['c']<0]。索引[0]查看索引,此处不进行筛选@扎卡里扬史密斯