Python PANDAS:在第一次出现列值后删除所有行

Pyl*_*der 5 python pandas

我有一个 PANDAS 数据框,其中的列具有打开/关闭状态值和排名字段值。按等级字段排序后,在第一次出现“打开”值后删除/删除所有行的最佳方法是什么?如果我应该在 PANDAS 中采用迭代器函数或基于标准索引的方法,我只是感到困惑。任何建议都会很棒!

编辑:这只是我迄今为止开始的

df["Rank", "Status"].sort_values(by="Rank")
Run Code Online (Sandbox Code Playgroud)

我试图完成的输出如下所示:

由此:

Rank Status
1    Closed
5    Closed
6    Open
9    Closed
10   Open
Run Code Online (Sandbox Code Playgroud)

对此:

Rank Status
 1    Closed
 5    Closed
 6    Open
Run Code Online (Sandbox Code Playgroud)

Woo*_*ide 7

您可以在对数据框进行排序时简单地重新索引数据框,然后找到“Open”的第一个实例的索引位置并将数据切片到那里......

import pandas as pd
#create dataframe
df = pd.DataFrame({
'Rank' : [5, 1, 10 ,6, 9],   
'Status' : ['Closed', 'Closed', 'Open', 'Closed', 'Open']
})

# sort and reindex
df = df.sort('Rank').reset_index()

#slice to first occurrence of your value
df.loc[: df[(df['Status'] == 'Open')].index[0], :]
Run Code Online (Sandbox Code Playgroud)