Cambiar filas en pandas -- python campo con pandas campo con matrix campo con dataframe campo con min camp Relacionados El problema

change rows in pandas


2
vote

problema

Español

Tengo una matriz en marco de datos de Pandas

  print dfMatrix        0       1      2      3       4 0  10000      10      8     11      10 1     10  100000     13      9      10 2      8      13  10000      9      11 3     11       9      9  10000      12 4     10      10     11     12  100000   

Necesito cambiar los valores de la fila al reducir el valor de cada fila por un mínimo de esa fila (Fila por fila) Aquí está el código que intento:

  def matrixReduction(matrix):     minRowValues = matrix.min(axis=1)     for i in xrange(matrix.shape[1]):         matrix[i][:] = matrix[i][:] - minRowValues[i]     return matrix   

y espere la salida como:

        0     1     2     3     4  0 9992     2     0     3     2  1    1 99991     4     0     1  2    0     5  9992     1     3  3    2     0     0  9991     3  4    0     0     1     2 99990   

pero obtengo tal salida:

        0      1     2     3      4 0  9992      1     0     2      0 1     2  99991     5     0      0 2     0      4  9992     0      1 3     3      0     1  9991      2 4     2      1     3     3  99990   

por lo que cambia valores en columnas en lugar de filas, ¿Cómo lo logro para las filas? thx

Original en ingles

i have a matrix in pandas data frame

print dfMatrix        0       1      2      3       4 0  10000      10      8     11      10 1     10  100000     13      9      10 2      8      13  10000      9      11 3     11       9      9  10000      12 4     10      10     11     12  100000 

I need to change row values by reducing each row value by minimum from that row(row by row) here is the code i try:

def matrixReduction(matrix):     minRowValues = matrix.min(axis=1)     for i in xrange(matrix.shape[1]):         matrix[i][:] = matrix[i][:] - minRowValues[i]     return matrix 

and expect output like:

      0     1     2     3     4  0 9992     2     0     3     2  1    1 99991     4     0     1  2    0     5  9992     1     3  3    2     0     0  9991     3  4    0     0     1     2 99990 

but i get such output:

      0      1     2     3      4 0  9992      1     0     2      0 1     2  99991     5     0      0 2     0      4  9992     0      1 3     3      0     1  9991      2 4     2      1     3     3  99990 

So it changes values in columns instead of rows, How do i achieve it for rows? thx

</div
              

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

Puede restar por sub valores mínimos por filas por min :

  print (df.min(axis=1)) 0     8 1     9 2     8 3     9 4    10 dtype: int64  print (df.sub(df.min(axis=1), axis=0))       0      1     2     3      4 0  9992      2     0     3      2 1     1  99991     4     0      1 2     0      5  9992     1      3 3     2      0     0  9991      3 4     0      0     1     2  99990   

Intento también reescribir su función: agrego < Código> ix para seleccionar:

  def matrixReduction(matrix):     minRowValues = matrix.min(axis=1)     for i in range(matrix.shape[1]):         matrix.ix[i,:] = matrix.ix[i, :] - minRowValues[i]     return matrix   

Tiempos :

  In [136]: %timeit (matrixReduction(df)) 100 loops, best of 3: 2.64 ms per loop  In [137]: %timeit (df.sub(df.min(axis=1), axis=0)) The slowest run took 5.49 times longer than the fastest. This could mean that an intermediate result is being cached. 1000 loops, best of 3: 308 µs per loop   
 

You can subtract by sub minimal values per rows by min:

print (df.min(axis=1)) 0     8 1     9 2     8 3     9 4    10 dtype: int64  print (df.sub(df.min(axis=1), axis=0))       0      1     2     3      4 0  9992      2     0     3      2 1     1  99991     4     0      1 2     0      5  9992     1      3 3     2      0     0  9991      3 4     0      0     1     2  99990 

I try also rewrite your function - I add ix for selecting:

def matrixReduction(matrix):     minRowValues = matrix.min(axis=1)     for i in range(matrix.shape[1]):         matrix.ix[i,:] = matrix.ix[i, :] - minRowValues[i]     return matrix 

Timings:

In [136]: %timeit (matrixReduction(df)) 100 loops, best of 3: 2.64 ms per loop  In [137]: %timeit (df.sub(df.min(axis=1), axis=0)) The slowest run took 5.49 times longer than the fastest. This could mean that an intermediate result is being cached. 1000 loops, best of 3: 308 µs per loop 
</div
 
 

Relacionados problema

1  Obteniendo un mínimo de tres valores en el diccionario interno (Python 3.4)  ( Getting minimum three values in inner dictionary python 3 4 ) 
Los valores de mi diccionario son así: manhattan[imagePath1][imagePath2] = img2manhattan . Entonces, ¿cómo puedo obtener las llaves de los tres valores m...

1  Min () Función en SQL  ( Min function in sql ) 
necesita ayuda con la función MIN en SQL Tengo una tabla como se muestra a continuación. + ------------ + ------- + ------- + | Fecha_ | Nombre | Puntuaci...

0  Tratando de encontrar MIN y MAX desde el archivo TXT con cuerdas y flotadores  ( Trying to find min and max from txt file with strings and floats ) 
Estoy tratando de encontrar los valores MIN y MAX (flotadores) de un archivo TXT formateado como este: name grade name grade name grade cuando ejecuto ...

2  Cambiar filas en pandas  ( Change rows in pandas ) 
Tengo una matriz en marco de datos de Pandas print dfMatrix 0 1 2 3 4 0 10000 10 8 11 10 1 10 100000 ...

27  MySQL Encuentra más pequeño + ID único disponible  ( Mysql find smallest unique id available ) 
Tengo una identificación de columna y algo así como 1000 artículos, algunos de entonces se eliminaron como id=90, id=127, id=326 ¿Cómo puedo hacer una con...

13  Error MINGW: 'MIN' NO ES UN MIEMBRO DE 'STD'  ( Mingw error min is not a member of std ) 
Estoy tratando de convertir un código VC ++ 6 a una aplicación de consola usando solo las bibliotecas estándar, pero estoy recibiendo el siguiente error de MI...

1  Usando matrices de Java para obtener Min & Max  ( Using java arrays to get min max ) 
Gracias por su ayuda. Aquí está la asignación: El instructor de tecnología informática tiene una pequeña clase de 10 estudiantes. El instructor evalúa el...

3  Postgres - Encuentra Min Of Array  ( Postgres find min of array ) 
Supongamos que tengo una mesa como esta: link_ids | length ------------+----------- {1,4} | {1,2} {2,5} | {0,1} ¿Cómo puedo encontrar l...

2  Encontrar promedio, min y max en ensamblaje  ( Finding average min and max in assembly ) 
Estoy teniendo un problema en encontrar el promedio, min y max de una matriz en lenguaje ensamblador. Creé una matriz simple con C ++ y creé un archivo de pru...

1  ¿Cómo obtener puntos de cambio en Oracle SELECT QUERY?  ( How to get change points in oracle select query ) 
¿Cómo puedo seleccionar los puntos de cambio de este conjunto de datos 1 0 2 0 3 0 4 100 5 100 6 100 7 100 8 0 9 0 10 0 11 100 12 100 ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos