获取数据框中某列中第一个出现的索引



我有以下数据框架:

import pandas as pd
d = {'Stages': ['Stage 1', 'Stage 2', 'Stage 2', 'Stage 2', 'Stage 3', 'Stage 1'], 'Start(s)': [0, 630, 780, 840, 900, 930], 'End(s)': [630, 780, 840, 900, 930, 960]}
df = pd.DataFrame(data=d)
Stages         Start(s) End(s)
0   Stage 1          0      630
1   Stage 2         630     780
2   Stage 2         780     840
3   Stage 2         840     900
4   Stage 3         900     930
5   Stage 1         930     960

我想得到第2阶段第一次出现在"Stages"在本例中,它将是1.

我试着阅读类似问题的讨论,但无法实现任何。

如果始终存在至少一个Stage 2,则使用Series.idxmax比较第一个值:

print (df['Stages'].eq('Stage 2').idxmax())
1

如果可能不存在Stage 8,则使用nextiter的技巧:

print (next(iter(df.index[df['Stages'].eq('Stage 8')]), 'not exist'))
not exist
print (next(iter(df.index[df['Stages'].eq('Stage 2')]), 'not exist'))
1

因为如果不存在匹配值idxmax,则返回第一个False值:

print (df['Stages'].eq('Stage 8').idxmax())
0

另一个想法是先测试不缺失值的索引是由Series.whereSeries.first_valid_index:

print (df['Stages'].where(df['Stages'].eq('Stage 8')).first_valid_index())
None
print (df['Stages'].where(df['Stages'].eq('Stage 2')).first_valid_index())
1

相关内容

最新更新