Saya memiliki kerangka data panda dengan nama kolom berikut:
Result1, Test1, Result2, Test2, Result3, Test3, dll ...
Saya ingin membuang semua kolom yang namanya mengandung kata "Test". Jumlah kolom tersebut tidak statis tetapi bergantung pada fungsi sebelumnya.
Bagaimana saya bisa melakukan itu?
Inilah cara yang bagus untuk ini:
sumber
df.drop(list(df.filter(regex = 'Test')), axis = 1, inplace = True)
list(df.filter(regex='Test'))
untuk lebih menunjukkan apa yang dilakukan garis. Saya juga akan memilihdf.filter(regex='Test').columns
lebih dari konversi daftarregex
kata kunci saatlike
kata kunci tampaknya lebih memadai.filter
adalah ia mengembalikan salinan SEMUA data sebagai kolom yang ingin Anda jatuhkan. Akan sia-sia jika Anda hanya meneruskan hasil ini kedrop
(yang lagi-lagi mengembalikan salinan) ... solusi yang lebih baik adalahstr.startswith
(saya telah menambahkan jawaban dengan itu di sini).Lebih Murah, Lebih Cepat, dan Idiomatis:
str.contains
Di versi terbaru panda, Anda dapat menggunakan metode string pada indeks dan kolom. Di sini,
str.startswith
sepertinya cocok.Untuk menghapus semua kolom yang dimulai dengan substring tertentu:
Untuk pencocokan tidak peka huruf besar / kecil, Anda dapat menggunakan pencocokan berbasis ekspresi reguler dengan
str.contains
dengan anchor SOL:jika tipe campuran adalah suatu kemungkinan, sebutkan
na=False
juga.sumber
Anda dapat memfilter kolom yang Anda inginkan menggunakan 'filter'
Sekarang saring
Dapatkan..
sumber
not like='result'
Ini bisa dilakukan dengan rapi dalam satu baris dengan:
sumber
df.drop(df.filter(regex='Test').columns, axis=1, inplace=True)
Gunakan
DataFrame.select
metode:sumber
FutureWarning: 'select' is deprecated and will be removed in a future release. You can use .loc[labels.map(crit)] as a replacement
import re
sebelumnya.Metode ini melakukan segalanya pada tempatnya. Banyak dari jawaban lain membuat salinan dan tidak seefisien:
df.drop(df.columns[df.columns.str.contains('Test')], axis=1, inplace=True)
sumber
Jangan jatuh. Tangkap kebalikan dari apa yang Anda inginkan.
sumber
cara terpendek untuk melakukannya adalah:
sumber
Solusi saat menjatuhkan daftar nama kolom yang berisi regex. Saya lebih suka pendekatan ini karena saya sering mengedit daftar drop-list. Menggunakan regex filter negatif untuk daftar drop.
sumber