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