找到新的出口命运:数据科学 - groupby和isin

问题描述 投票:2回答:3

对于下面的df,我想发现这些公司(id对应一家公司)的新命运在2016年与2015年相关。

df = pd.DataFrame({"Id":[1,1,1,1,1,1,2,2,2,3,3], 
               "Year":[2015,2015,2016,2016,2016,2016,2015,2016,2016,2015,2016], 
               "Destiny":['A','B','A','B','C','D','C','C','D','A','Z']})

我想在groupby + isin,但无法管理任何有希望的方法

输出结果应为:

 Id   Year   Destiny
 1    2016        D
 3    2016        Z
python pandas group-by
3个回答
2
投票

你可以简单地删除有2015年的Destinies

to_remove = df[df['Year'].isin([2015])]['Destiny']

df[~df['Destiny'].isin(to_remove)]

   Destiny  Id  Year
5        D   1  2016
8        D   2  2016
10       Z   3  2016

3
投票

达蒙:

df.sort_values(by=['Id','Year']).drop_duplicates(subset=['Id'], keep='last')

输出:

   Destiny  Id  Year
5        D   1  2016
8        D   2  2016
10       Z   3  2016

0
投票

Please try this below code also:请尝试这个:

df = pd.DataFrame({"Id":[1,1,1,1,1,1,2,2,2,3,3], 
           "Year":[2015,2015,2016,2016,2016,2016,2015,2016,2016,2015,2016], 
           "Destiny":['A','B','A','B','C','D','C','C','D','A','Z']})
df.groupby(["Id"]).last()
© www.soinside.com 2019 - 2024. All rights reserved.