我有一个像这样的数据框(简化):
Year ID Value
0 2000 A 0
1 2001 A 1
2 2000 A 2
3 2000 B 3
4 2001 B 4
5 2000 C 5
6 2001 C 6
7 1990 D 7
8 1990 E 8
9 1991 E 9
10 1993 E 10
11 1993 E 11
12 1994 E 12
我只对存在3年或更长时间的ID感兴趣。我可以笨拙地逐步测试每个ID
for id in list(Set(df['ID'])):
if len(list(Set(df[df['ID']==id]['Year']))) >= 3:
df2 = df2.append( df[df['ID']==id] )
Year ID Value
8 1990 E 8
9 1991 E 9
10 1993 E 10
11 1993 E 11
12 1994 E 12
但似乎应该有一种更简单的方法。
答案 0 :(得分:4)
(df.groupby(['ID'])
.filter(lambda x: x['Year'].nunique()>=3))
产量
Year ID Value
8 1990 E 8
9 1991 E 9
10 1993 E 10
11 1993 E 11
12 1994 E 12
[5 rows x 3 columns]