仅在字段连续顺序的情况下选择数据

时间:2016-04-09 10:01:29

标签: python pandas

我有一个代表个人的数据集,也代表了多年的客户。数据被加载到我的pandas数据帧中,供我快速分析。

姓名年份 约翰2012 约翰2016年 伯尔尼2011 伯尔尼2012年

这里的挑战是确定只有连续2年的名字。

我只想选择。

姓名年份 伯尔尼2011 伯尔尼2012年

约翰显然因为他与我们的岁月休息而被取消资格。

感谢任何帮助。

抱歉桌子变形了。目前在移动设备上。

1 个答案:

答案 0 :(得分:0)

我认为您可以将boolean indexingdiffshift一起使用。最后,您可以filter2小组:

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