Skip to main content
 首页 » 编程设计

python之仅保留满足相对于另一列的条件的行

2025年05月04日14sharpest

所以现在我有一个像这样的 Pandas DF:

Name     Year      Label 
 
Jeff     2018        0 
Jeff     2019        1 
Matt     2018        0 
John     2018        0 
Mary     2018        1 
Mary     2019        1 

我想为每个具有 2018 年和 2019 年的唯一名称保留所有行。

结果应该是这样的:

Name     Year      Label 
 
Jeff     2018        0 
Jeff     2019        1 
Mary     2018        1 
Mary     2019        1 

Matt 和 John 被删除了,因为他们没有同时拥有 2018 年和 2019 年。

如有任何想法,我们将不胜感激!

请您参考如下方法:

使用crosstab 选择所有包含两年的名字,然后使用isin

s=pd.crosstab(df.Name,df.Year)[[2018,2019]].eq(1).sum(1)==2 
df.loc[df.Name.isin(s.index[s])] 
Out[463]:  
   Name  Year 
0  Jeff  2018 
1  Jeff  2019 
4  Mary  2018 
5  Mary  2019