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

时间:2018-01-03 14:09:59

标签: python pandas group-by

对于下面的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

3 个答案:

答案 0 :(得分:3)

IIUC:

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

答案 1 :(得分: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

答案 2 :(得分: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()