首页 > 解决方案 > 如何在python中应用窗口函数?

问题描述

我有以下示例数据框:- 即 id,不同年份和季度的名称,具有不同的值

id name year quater value 
1  bn   2017 2
1  bn   2017 3     4.5
1  bn   2017 4
2  an   2018 1     2.3   
2  an   2018 2     3.3
2  an   2018 3     4.5

我必须确定名称 + id(主键)是否在之前出现过,并且具有价值的 quater 然后将其视为现有(0),如果将来有价值并且之前什么都没有,则将其视为新的(1 )。

id name year quater value status
1  bn   2017 2            1
1  bn   2017 3     4.5    0
1  bn   2017 4            0
2  an   2018 1     2.3    1 
2  an   2018 2     3.3    0
2  an   2018 3     4.5    0

标签: pandaswindow

解决方案


我相信需要duplicated通过反转布尔掩码~并转换为integer

df['status'] = (~df['name'].duplicated()).astype(int)
#if multiple columns
#df['status'] = (~df.duplicated(['id','name'])).astype(int)
print (df)
   id name  year  quater  value  status
0   1   bn  2017       2    NaN       1
1   2   an  2018       1    2.3       1
2   2   an  2018       2    3.3       0
3   2   an  2018       3    4.5       0

推荐阅读