我有一个熊猫数据框,看起来像这样:
pd.DataFrame({'a':['cust1', 'cust1', 'cust2', 'cust3', 'cust3', 'cust4', 'cust4'],
'date':[date(2019, 1, 20), date(2020, 6, 15), date(2017, 1, 10), date(2015, 6, 12), date(2017, 12, 15), date(2018, 12, 10), date(2017, 1, 5)]
})
a date
0 cust1 2019-01-20
1 cust1 2020-06-15
2 cust2 2017-01-10
3 cust3 2015-06-12
4 cust3 2017-12-15
5 cust4 2018-12-10
6 cust4 2017-01-05
如果“日期”列中的年份是“背对背”或彼此相邻(即年份之间没有间隔),并且“a”中每个组至少有2个不同的日期,我希望在“a”列中按组选择所有行
生成的数据帧应该如下所示
a date
0 cust1 2019-01-20
1 cust1 2020-06-15
5 cust4 2018-12-10
6 cust4 2017-01-05
说明:未选择第2行,因为组“cust2”只有1年/日期。未选择集团“cust3”,因为2015年和2017年之间存在“差距”
将} 将
date
列转换为时间序列,然后使用^{a
列上的year
分组,并使用diff
获得连续的差异,然后使用shift
+ffill
,最后使用abs
+Series.eq
创建布尔掩码m
,使用此掩码过滤行:结果:
为了清晰起见,这里有一个使用
groupby
和shift
的解决方案,分几个步骤:输出:
相关问题 更多 >
编程相关推荐