[英]Python PANDAS: Drop All Rows After First Occurrence of Column Value
我有一个PANDAS数据框,其中的列具有打开/关闭状态值和排名字段值。 按排名字段排序后,在第一次出现“开放”值后删除/删除所有行的最佳方法是什么? 如果我应该使用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
您可以在排序时简单地重新索引数据框,然后找到第一个“打开”实例的索引位置并将数据切片到那里....
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], :]
几乎相同的答案。 直接操作df。
df = df[:df[df['Status'] == 'Open'].index[0]]
这将返回值的第一个实例的索引,然后将DataFrame切片到该行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.