如何删除数据框(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