J'ai un dataframe avec des noms de colonnes et je veux trouver celui qui contient une certaine chaîne, mais qui ne la correspond pas exactement. Je cherche 'spike'
dans les noms de colonnes aiment 'spike-2'
, 'hey spike'
, 'spiked-in'
(la 'spike'
partie est toujours en continu).
Je veux que le nom de la colonne soit renvoyé sous forme de chaîne ou de variable, donc j'accède à la colonne plus tard avec df['name']
ou df[name]
comme d'habitude. J'ai essayé de trouver des moyens de le faire, en vain. Des conseils?
DataFrame.filter
fait FYI (et vous pouvez fournir une regex si vous le souhaitez)df[df.columns.drop(spike_cols)]
, là vous obtenez unDataFrame
sans les colonnes dans la listespike_cols
que vous pouvez obtenir en utilisant votre regex indésirable.df[[col for col in df.columns if "spike" in col]]
Cette réponse utilise la méthode DataFrame.filter pour ce faire sans compréhension de liste:
Sortira juste «pic-2». Vous pouvez également utiliser regex, comme certaines personnes l'ont suggéré dans les commentaires ci-dessus:
Affiche les deux colonnes: ['spike-2', 'hey spke']
la source
Vous pouvez aussi utiliser
df.columns[df.columns.str.contains(pat = 'spike')]
Cela affichera les noms de colonne:
'spike-2', 'spiked-in'
En savoir plus sur pandas.Series.str.contains .
la source
Vous pouvez également sélectionner par nom, expression régulière. Reportez-vous à: pandas.DataFrame.filter
la source
la source
Vous pouvez également utiliser ce code:
la source
Obtention du nom et du sous-ensemble en fonction de Début, Contient et Fin:
la source