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

编辑:这就是到目前为止我已经开始

df["Rank", "Status"].sort_values(by="Rank")

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

由此:
Rank Status
1    Closed
5    Closed
6    Open
9    Closed
10   Open

对此:
Rank Status
 1    Closed
 5    Closed
 6    Open

最佳答案

您可以在对数据框进行排序时简单地为其重新索引,然后找到“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], :]

关于Python PANDAS : Drop All Rows After First Occurrence of Column Value,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34163431/

10-12 18:04