Mam dataframe, który wygląda tak

pd.DataFrame({'a': ['cust1', 'cust1', 'cust1', 'cust2', 'cust2', 'cust3', 'cust3', 'cust4', 'cust4'],
                   'year': [2017, 2018, 2019, 2018, 2019, 2017, 2018, 2018, 2019],
                   'cond': [True, True, False, True, True, True, True, True, True]})

       a  year   cond
0  cust1  2017   True
1  cust1  2018   True
2  cust1  2019  False
3  cust2  2018   True
4  cust2  2019   True
5  cust3  2017   True
6  cust3  2018   True
7  cust4  2018   True
8  cust4  2019   True

Jak wybrać wszystkie wiersze grupy w kolumnie "A" gdzie "Rok" = 2019 ma "Cond" = true?

Wynikowa ramka danych powinna wyglądać następująco

       a  year   cond
3  cust2  2018   True
4  cust2  2019   True
7  cust4  2018   True
8  cust4  2019   True

Logika:

Wiersze do grupy Cust1 nie są wybrane w 2009 r. = False

Wiersze dla grupy Cust2 wybrane w roku 2019 = true

Wiersze dla grupy Cust3 nie są wybrane w roku 2019 Brak dostępnych danych

Wiersze do grupy Cust4 wybrane w roku 2019 = true

0
idt_tt 27 lipiec 2020, 13:34

1 odpowiedź

Najlepsza odpowiedź

Spróbuj tego, boolean_indexing + {x1}} .

print(
    df[df.a.isin(df.loc[df.year.eq(2019) & df.cond, 'a'].unique())]
)

       a  year  cond
3  cust2  2018  True
4  cust2  2019  True
7  cust4  2018  True
8  cust4  2019  True
2
sushanth 27 lipiec 2020, 10:48