我有一个代表个人的数据集,也代表了多年的客户。数据被加载到我的pandas数据帧中,供我快速分析。
姓名年份 约翰2012 约翰2016年 伯尔尼2011 伯尔尼2012年
这里的挑战是确定只有连续2年的名字。
我只想选择。
姓名年份 伯尔尼2011 伯尔尼2012年
约翰显然因为他与我们的岁月休息而被取消资格。感谢任何帮助。
抱歉桌子变形了。目前在移动设备上。
答案 0 :(得分:0)
我认为您可以将boolean indexing与diff
和shift
一起使用。最后,您可以filter
个2
小组:
print df
0 John 2012
1 John 2016
2 Bern 2011
3 Bern 2012
4 Jon 2011
5 Jon 2012
6 Jon 2013
print (df.Year.diff() == 1) | (df.Year.shift(-1).diff() == 1)
0 False
1 False
2 True
3 True
4 True
5 True
6 True
Name: Year, dtype: bool
df1 = df[(df.Year.diff() == 1) | (df.Year.shift(-1).diff() == 1) ]
print df1
Name Year
2 Bern 2011
3 Bern 2012
4 Jon 2011
5 Jon 2012
6 Jon 2013
print df1.groupby('Name').filter(lambda x: len(x) == 2)
Name Year
2 Bern 2011
3 Bern 2012