Ich habe einen Datenrahmen mit Spaltennamen und möchte den finden, der eine bestimmte Zeichenfolge enthält, aber nicht genau mit dieser übereinstimmt. Ich suche 'spike'
in Spaltennamen wie 'spike-2'
, 'hey spike'
, 'spiked-in'
(der 'spike'
Teil immer stetig ist).
Ich möchte, dass der Spaltenname als Zeichenfolge oder Variable zurückgegeben wird, damit ich später mit df['name']
oder df[name]
wie gewohnt auf die Spalte zugreifen kann . Ich habe versucht, Wege zu finden, um dies zu tun, ohne Erfolg. Irgendwelche Tipps?
DataFrame.filter
FYI (und Sie können eine Regex liefern, wenn Sie wollen)df[df.columns.drop(spike_cols)]
Sie eineDataFrame
Spalte ohne die Spalten in der Liste,spike_cols
die Sie mit Ihrem unerwünschten regulären Ausdruck erhalten können.df[[col for col in df.columns if "spike" in col]]
Diese Antwort verwendet die DataFrame.filter-Methode, um dies ohne Listenverständnis zu tun:
Gibt nur 'spike-2' aus. Sie können auch Regex verwenden, wie einige in den obigen Kommentaren vorgeschlagen haben:
Gibt beide Spalten aus: ['spike-2', 'hey spke']
quelle
Sie können auch verwenden
df.columns[df.columns.str.contains(pat = 'spike')]
Dadurch werden die Spaltennamen ausgegeben:
'spike-2', 'spiked-in'
Mehr über pandas.Series.str.contains .
quelle
Sie können auch nach Namen und regulären Ausdrücken auswählen. Siehe: pandas.DataFrame.filter
quelle
quelle
Sie können diesen Code auch verwenden:
quelle
Abrufen des Namens und der Teilmenge basierend auf Start, Enthält und Ende:
quelle