我有一个df,其条目因修订而重复。我试图通过他们的“状态”来过滤掉它们。 例如:
>>> import pandas as pd
>>> d = pd.DataFrame( { 'Item':['Submission#1','Submission#1','Submission#2','Su
bmission#2','Submission#2','Submission#3','Submission#3'], 'Revision' : [0,1,0,1
,2,0,1], 'Status' : ['R','A','R','P','A','R','P']} )
>>> d
Item Revision Status
0 Submission#1 0 R
1 Submission#1 1 A
2 Submission#2 0 R
3 Submission#2 1 P
4 Submission#2 2 A
5 Submission#3 0 R
6 Submission#3 1 P
我想在最新版本中保留“P”(待定)的“提交内容”。 “提交#3”条目仅记录为“提交#1”已在最新修订版中获得批准,“提交#2”等待“修订版”1中的待批准,已在“修订版”2中获得批准。
结果:
Item Revision Status
5 Submission#3 0 R
6 Submission#3 1 P
有人可以通过查找其条目的其他实例,查找所有“修订”并根据最新状态选择它们来指导我如何过滤数据吗?
答案 0 :(得分:1)
我们可以使用groupby和isin基于布尔索引,即
new = d.loc[d.groupby('Item')['Revision'].idxmax()]
# Item Revision Status
#1 Submission#1 1 A
#4 Submission#2 2 A
#6 Submission#3 1 P
sub = new[new['Status'] == 'P']['Item']
#6 Submission#3
#Name: Item, dtype: object
late = d[d['Item'].isin(sub)]
输出迟到:
Item Revision Status 5 Submission#3 0 R 6 Submission#3 1 P