如何在python中应用窗口函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中应用窗口函数?相关的知识,希望对你有一定的参考价值。
我有以下示例数据框: - i.c.e. 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
另一答案
您可以将duplicated
与id,name和year的子集一起使用,然后将结果反转以标识第一次出现...,例如:
df['status'] = (~df.duplicated(subset=['id', 'name', 'year'])).astype(int)
给你:
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
请注意,虽然这可以按照您的要求对您的数据进行处理,但您可能希望按年份(可能是季度)进行排序,以确保您的状态标记在同一年内和第一季度内正确显示。
以上是关于如何在python中应用窗口函数?的主要内容,如果未能解决你的问题,请参考以下文章