web-dev-qa-db-fra.com

Comment vérifier si une valeur est dans la liste dans la sélection de pandas data frame?

Ça a l'air moche:

df_cut = df_new[
             (
             (df_new['l_ext']==31) |
             (df_new['l_ext']==22) |
             (df_new['l_ext']==30) |
             (df_new['l_ext']==25) |
             (df_new['l_ext']==64)
             )
            ]

Ne marche pas:

df_cut = df_new[(df_new['l_ext'] in [31, 22, 30, 25, 64])]

Existe-t-il une solution élégante et fonctionnelle au "problème" ci-dessus?

23
Roman

Utilisez isin

df_new[df_new['l_ext'].isin([31, 22, 30, 25, 64])]
52
waitingkuo

Vous pouvez utiliser pd.DataFrame.query :

select_values = [31, 22, 30, 25, 64]
df_cut = df_new.query('l_ext in @select_values')

En arrière-plan, cela utilise le niveau supérieur pd.eval fonction.

0
jpp