Exemples de comment sélectionner (filtrer) les colonnes d'une dataframe se terminant par *** avec pandas
Créer une dataframe avec pandas
Commençons par créer un dataframe avec pandas
import pandas as pdimport numpy as npdata = np.arange(1,33)data = data.reshape(4,8)df = pd.DataFrame(data=data,columns=['product_l1','product_l2','product_l3','product_l4','product_id','product_01_name','product_02_name','product_source'])print(df)
donne
product_l1 product_l2 product_l3 product_l4 product_id \0 1 2 3 4 51 9 10 11 12 132 17 18 19 20 213 25 26 27 28 29product_01_name product_02_name product_source0 6 7 81 14 15 162 22 23 243 30 31 32
Sélectionnez les colonnes qui se terminent par "_name"
Pour sélectionner uniquement les colonnes terminant par "_name", une solution consiste d'abord à créer une liste de noms de colonnes se terminant par "_name":
col_list = [col for col in df.columns if col.endswith('_name')]
donne ici
['product_01_name', 'product_02_name']
puis faire
df[col_list ]
ou
df.loc[:, col_list ]
ce qui donne
product_01_name product_02_name0 6 71 14 152 22 233 30 31
Notez que
df.loc[:, df.columns.str.endswith('_name') ]
donne aussi
product_01_name product_02_name0 6 71 14 152 22 233 30 31
Utilisation d'un filtre
Une autre solution consiste à utiliser filter() :
df.filter(regex='_name$',axis=1)
donne
product_01_name product_02_name0 6 71 14 152 22 233 30 31
Sélectionnez les colonnes qui se terminent par '_l1', '_l2', '_l3' or '_l4'
Autre exemple plus complexe, sélectionnons les colonnes qui se terminent par'_l1', '_l2', '_l3' or '_l4':
col_list = [col for col in df.columns if col[:-1].endswith('_l')]df.loc[:, col_list ]
donne
product_l1 product_l2 product_l3 product_l40 1 2 3 41 9 10 11 122 17 18 19 203 25 26 27 28
