dept_ID Year_join salary present
1 ID1 2000 10000 0
2 ID1 2001 10000 0
3 ID1 2002 10000 0
4 ID1 2003 10000 0
5 ID1 2004 10000 1
6 ID2 2000 20000 0
7 ID2 2001 20000 1
8 ID2 2002 20000 0
9 ID3 2000 15000 1
10 ID1 2000 10000 0
11 ID1 2001 10000 0
12 ID1 2002 10000 0
13 ID1 2003 10000 0
14 ID1 2004 10000 0
15 ID2 2000 20000 1
16 ID2 2001 20000 0
17 ID2 2002 20000 0
18 ID3 2000 15000 0
19 ID1 2000 10000 1
20 ID1 2001 10000 0
Я хочу извлечь данные всех идентификаторов отделов, которые хотя бы один раз равны 1, а также, если мне нужно 500 уникальных данных dept_id. Я пробовал приведенный ниже код, но не получил желаемый вывод.
dept_sub=df.dropna(subset=['dept_ID'])
df_1 = dept_sub[dept_sub['present'].isin(['1'])].copy()
s = df.groupby('dept_ID')['present'].nunique()
department = s.index[s.eq(1)].unique()
final_data = dept_sub[dept_sub['dept_ID'].isin(department)]
Это желаемый вывод
dept_ID Year_join salary present
1 ID1 2000 10000 0
2 ID1 2001 10000 0
3 ID1 2002 10000 0
4 ID1 2003 10000 0
5 ID1 2004 10000 1
6 ID2 2000 20000 0
7 ID2 2001 20000 1
8 ID2 2002 20000 0
9 ID3 2000 15000 1
10 ID1 2000 10000 0
11 ID1 2001 10000 0
12 ID1 2002 10000 0
13 ID1 2003 10000 0
14 ID1 2004 10000 0
16 ID2 2001 20000 0
17 ID2 2002 20000 0
18 ID3 2000 15000 0
20 ID1 2001 10000 0
Это пример данных из 20 строк. На самом деле моя форма набора данных (500000,50). Я хочу извлечь данные из всех 500 dept_id, содержащих хотя бы одно текущее значение == 1 и текущее значение покоя == 0 для этого dept_ID