如何在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中应用窗口函数?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 使用网格布局格式化窗口

css有用的代码片段

如何在 python 中并行化以下代码片段?

如何使用 pywin32 在 Python 中获取特定应用程序窗口的句柄?

Python:如何单击窗口应用程序中的图像按钮?

Python之如何优雅的重试