如何删除数据框(Python)中的当前实例和下一个实例?

问题描述:

说我有这个数据框,df。它的结构是这样的:如何删除数据框(Python)中的当前实例和下一个实例?

index  date animal park_visits 
0   Jan  cat  1 
1   Jan  dog  2 
2   Feb  cat  1 
3   Feb  dog  1 
4   Feb  pig  4 
5   March cat  3 
6   March dog  2 
7   March pig  3 
8   April cat  2 

如何创建一个新的数据帧,例如,如果在当月的动物具有小于单一园的月访问量,以排除该行以及下月的排?

例如,在索引0处,猫在1月只有一次公园访问,所以我将排除索引0和2处的条目。此外,由于猫在2月份访问了公园,所以我也会当猫在三月份访问公园3次时,排除索引5处的条目。但由于猫在三月份曾三次参加过这个公园,我将包括四月份的参赛作品。

结果,结局,样本数据帧我想最终是要看起来像这样:

index date animal park_visits 
    0  Jan  dog   2 
    1  Feb  pig   4 
    2  March pig   3 
    3  April cat   2 

有什么办法没有环有效做到这一点?我最好的猜测是创建一个新的数据框,其中park_visits = 1,然后尝试删除下一个日期和动物相同的实例。但是,我不知道如何只删除下一个实例,而不是所有实例(所以我需要保留日期为四月的条目,动物是猫,并且park_visits是2)。任何帮助,将不胜感激。

我们想要确定那些行,其中park_visits大于本月和上个月。我们用shift查看前一个月

f = lambda x: (lambda y: y & y.shift().fillna(True))(x > 1) 

df[df.groupby('animal').park_visits.transform(f)] 

     date animal park_visits 
index       
1  Jan dog   2 
4  Feb pig   4 
7  March pig   3 
8  April cat   2