pandas - 如何在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
解决方案
我相信需要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