Tengo el df con las siguientes columnas:

df.columns

['total_rech_num_6', 'total_rech_num_7', 'total_rech_num_8','max_rech_amt_6', 'max_rech_amt_7', 'max_rech_amt_8','max_amt_6', 'max_amt_7', 'max_amt_8'].

Me gustaría seleccionar solo aquellas columnas que tienen 'rech' Y '6' en el nombre de la columna.

Intenté esto para seleccionar columnas con arech ':

recharge_cols = [col for col in df.columns if 'rech' in col]

Pero no sé cómo agregar la otra condición de cadena para obtener las columnas 'rica' Y '6'. ¡¡Necesitas ayuda!!

1
Nishant 11 may. 2019 a las 10:06

3 respuestas

La mejor respuesta

Puede usar esta expresión de 1 línea:

   recharge_cols = [i for i in list(df) if 'rech' in i and '6' in i]
0
MNK 11 may. 2019 a las 07:10

Prueba esto:

recharge_cols = [col for col in df.columns if 'rech' in col and '6' in col]
0
Klemen Koleša 11 may. 2019 a las 07:08

Use and con otra declaración in:

recharge_cols = [col for col in df.columns if 'rech' in col and '6' in col]
print (recharge_cols)
['total_rech_num_6', 'max_rech_amt_6']

Solución de pandas:

recharge_cols = df.columns[df.columns.str.contains('rech') & 
                           df.columns.str.contains('6')].tolist()

print (recharge_cols)
['total_rech_num_6', 'max_rech_amt_6']
1
jezrael 11 may. 2019 a las 07:08