Obtener una lista de los encabezados de columna basado en lista de cadenas

Leo:

Problema: Tengo una trama de datos con varios títulos de las columnas que tienen nombres con las variaciones de las múltiples cadenas: 'Fee_code', 'zip_code', etc., y también algunos otros con: 'street_address', 'Dirección violation_street', etc.

Resultado esperado: Una lista con todos los títulos de las columnas que coinciden con las palabras clave: Cargo, dirección, código, nombre, y posiblemente otros basados ​​en el archivo específico que voy a trabajar en. Tenga en cuenta que sí quiero mantener el 'nombre de la agencia' cabecera de la columna.

Solución: Se me ocurrió esta función para enumerar todas las cadenas mencionadas anteriormente - y algunos más-:

def drop_cols(df):
    list1= list(df.filter(like='nam', axis=1))
    list1.remove('agency_name')
    list2= list(df.filter(like='add', axis=1))
    list3= list(df.filter(like='fee', axis=1))
    list4 = list(df.filter(like='code', axis=1))
    list5 = list(df.filter(like='status', axis=1))
    entry= list1+list2+list3+list4+list5
return entry

Este código funciona, pero es voluminoso y me pregunto si hay mejores maneras de lograr lo mismo: Desafío

Muestra de los encabezados de columna: 'ticket_id', 'agency_name', 'inspector_name', 'violator_name', 'violation_street_number', 'violation_street_name', 'violation_zip_code', 'mailing_address_str_number', 'mailing_address_str_name', 'ciudad', 'Estado', " zip_code', 'non_us_str_code', 'país', 'ticket_issued_date', 'hearing_date', 'violation_code', 'violation_description', 'disposición', 'fine_amount', 'admin_fee', 'state_fee', 'late_fee', 'DISCOUNT_AMOUNT' , 'clean_up_cost', 'judgment_amount', 'PAYMENT_AMOUNT', 'balance_due', 'payment_date', 'payment_status', 'collection_status', 'grafitti_status', 'compliance_detail', 'cumplimiento']

sammywemmy:

Una forma en que podría ir sobre ella:

#create search collection of relevant terms
search='|'.join(['fee','address','code','name'])

#use the filter method in pandas with the regex option
#then drop the 'agency_name' column
#d is the dataframe

d.filter(regex=search,axis=1).drop('agency_name',axis=1)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=351474&siteId=1
Recomendado
Clasificación