column python pandas row minimum calculated-columns

python - Pandas min() de fila y columnas seleccionadas



min value pandas (2)

Estoy tratando de crear una columna que contenga solo el mínimo de una fila y algunas columnas, por ejemplo:

A0 A1 A2 B0 B1 B2 C0 C1 0 0.84 0.47 0.55 0.46 0.76 0.42 0.24 0.75 1 0.43 0.47 0.93 0.39 0.58 0.83 0.35 0.39 2 0.12 0.17 0.35 0.00 0.19 0.22 0.93 0.73 3 0.95 0.56 0.84 0.74 0.52 0.51 0.28 0.03 4 0.73 0.19 0.88 0.51 0.73 0.69 0.74 0.61 5 0.18 0.46 0.62 0.84 0.68 0.17 0.02 0.53 6 0.38 0.55 0.80 0.87 0.01 0.88 0.56 0.72

Aquí estoy tratando de crear una columna que contenga el mínimo para cada fila de columnas B0, B1, B2.

La salida se vería así:

A0 A1 A2 B0 B1 B2 C0 C1 Minimum 0 0.84 0.47 0.55 0.46 0.76 0.42 0.24 0.75 0.42 1 0.43 0.47 0.93 0.39 0.58 0.83 0.35 0.39 0.39 2 0.12 0.17 0.35 0.00 0.19 0.22 0.93 0.73 0.00 3 0.95 0.56 0.84 0.74 0.52 0.51 0.28 0.03 0.51 4 0.73 0.19 0.88 0.51 0.73 0.69 0.74 0.61 0.51 5 0.18 0.46 0.62 0.84 0.68 0.17 0.02 0.53 0.17 6 0.38 0.55 0.80 0.87 0.01 0.88 0.56 0.72 0.01

Aquí es parte del código, pero no está haciendo lo que quiero que haga:

for i in range(0,2): df[''Minimum''] = df.loc[0,''B''+str(i)].min()


Esto es de una sola línea, solo necesitas usar el argumento del axis para que min funcione en las columnas en lugar de bajar:

df[''Minimum''] = df.loc[:, [''B0'', ''B1'', ''B2'']].min(axis=1)

Si necesita usar esta solución para diferentes números de columnas, puede usar una comprensión de bucle for o lista para construir la lista de columnas:

n_columns = 2 cols_to_use = [''B'' + str(i) for i in range(n_columns)] df[''Minimum''] = df.loc[:, cols_to_use].min(axis=1)


df[''Minimum''] = df[[''B0'', ''B1'', ''B2'']].apply(lambda x: min(x[0],x[1],x[2]), axis=1)