Saya memiliki kerangka data dengan nama kolom, dan saya ingin menemukan yang berisi string tertentu, tetapi tidak sama persis dengan itu. Aku mencari 'spike'
di kolom nama seperti 'spike-2'
, 'hey spike'
, 'spiked-in'
(yang 'spike'
bagian selalu terus-menerus).
Saya ingin nama kolom dikembalikan sebagai string atau variabel, jadi saya mengakses kolom nanti dengan df['name']
atau df[name]
seperti biasa. Saya sudah mencoba menemukan cara untuk melakukan ini, tetapi tidak berhasil. Ada tips?
DataFrame.filter
dilakukan FYI (dan Anda dapat menyediakan regex jika Anda mau)df[df.columns.drop(spike_cols)]
, di sana Anda mendapatkanDataFrame
tanpa kolom dalam daftarspike_cols
yang bisa Anda peroleh menggunakan regex yang tidak diinginkan.df[[col for col in df.columns if "spike" in col]]
Jawaban ini menggunakan metode DataFrame.filter untuk melakukan ini tanpa pemahaman daftar:
Akan menampilkan hanya 'spike-2'. Anda juga dapat menggunakan regex, seperti yang disarankan beberapa orang di komentar di atas:
Akan menampilkan kedua kolom: ['spike-2', 'hey spke']
sumber
Anda juga bisa menggunakan
df.columns[df.columns.str.contains(pat = 'spike')]
Ini akan menampilkan nama kolom:
'spike-2', 'spiked-in'
Lebih lanjut tentang pandas.Series.str.contains .
sumber
Anda juga dapat memilih berdasarkan nama, ekspresi reguler. Rujuk ke: pandas.DataFrame.filter
sumber
sumber
Anda juga dapat menggunakan kode ini:
sumber
Mendapatkan nama dan subset berdasarkan Mulai, Berisi, dan Berakhir:
sumber