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 pd
import numpy as np
data = 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 5
1 9 10 11 12 13
2 17 18 19 20 21
3 25 26 27 28 29
product_01_name product_02_name product_source
0 6 7 8
1 14 15 16
2 22 23 24
3 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_name
0 6 7
1 14 15
2 22 23
3 30 31
Notez que
df.loc[:, df.columns.str.endswith('_name') ]
donne aussi
product_01_name product_02_name
0 6 7
1 14 15
2 22 23
3 30 31
Utilisation d'un filtre
Une autre solution consiste à utiliser filter() :
df.filter(regex='_name$',axis=1)
donne
product_01_name product_02_name
0 6 7
1 14 15
2 22 23
3 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_l4
0 1 2 3 4
1 9 10 11 12
2 17 18 19 20
3 25 26 27 28