Tengo un pandas.Dataframe muy grande y quiero crear un nuevo Dataframe seleccionando todas las columnas donde una fila tiene un valor específico.
ABCDE Region Nord Süd West Nord Nord value 2.3 1.2 4.2 0.5 1.3 value2 20 400 30 123 200Ahora quiero crear un nuevo DataFrame con todas las columnas donde la fila "Región" tiene el valor "Norte".
¿Cómo puede hacerse esto? El resultado debería verse así:
ADE Region Nord Nord Nord value 2.3 0.5 1.3 value2 20 123 200Gracias por adelantado
Use primero DataFrame.loc para seleccionar todas las filas ( : por máscara loc fila seleccionada Region por otra ubicación:
df = df.loc[:, df.loc['Region'] == 'Nord'] print (df) ADE Region Nord Nord Nord value 2.3 0.5 1.3 value2 20 123 200 Mejor se crea MultiIndex por primera fila con columnas originales, luego es posible seleccionar por DataFrame.xs :
df.columns = [df.columns, df.iloc[0]] df = df.iloc[1:].rename_axis((None, None), axis=1) print (df) ABCDE Nord Süd West Nord Nord value 2.3 1.2 4.2 0.5 1.3 value2 20 400 30 123 200 print (df.xs('Nord', axis=1, level=1)) ADE value 2.3 0.5 1.3 value2 20 123 200 print (df.xs('Nord', axis=1, level=1, drop_level=False)) ADE Nord Nord Nord value 2.3 0.5 1.3 value2 20 123 200