Pandas检查事件是否已经发生的方法



假设我们有一个Pandas DataFrame (df)作为:

2020-01-02 2020-01-032020-01-022020-01-032020-01-022020-01-03

您可以使用.groupby+.filter:

x = df.groupby("nickname").filter(lambda x: x["event"].eq(0).all())
print(x)

打印:

nickname  event        Date
2        B      0  2020-01-02
3        B      0  2020-01-03

您的代码很接近。而不是使用.max()聚合和减少行数,您可以在'max'上使用.transform()使所有组值等于最大值(整个组为0或1)。

然后,像您所做的那样,检查这些值是否与0相等,以获得布尔索引。

最后,在布尔索引上使用.loc来定位全为零的组的行,如下所示:

df_out = df.loc[df.groupby('nickname')['event'].transform('max') == 0]

结果:

print(df_out)
nickname  event        Date
2        B      0  2020-01-02
3        B      0  2020-01-03

最新更新