熊猫:根据集合中的项目数量进行选择

时间:2014-02-17 20:33:00

标签: python pandas

我有一个像这样的数据框(简化):

    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

但似乎应该有一种更简单的方法。

1 个答案:

答案 0 :(得分:4)

使用groupby-filter

(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]