根据重复条目条件筛选数据框

时间:2017-11-11 11:01:36

标签: python pandas

我有一个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

有人可以通过查找其条目的其他实例,查找所有“修订”并根据最新状态选择它们来指导我如何过滤数据吗?

1 个答案:

答案 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