Los pandas cambian los valores en la columna en función de los valores en otra columna

emilaz:

Tengo un marco de datos en el que una columna representa algunos datos, la otra columna representa índices en los que quiero eliminar de mis datos. Entonces a partir de esto:

import pandas as pd
import numpy as np

df = pd.DataFrame({'data':[np.arange(1,5),np.arange(3)],'to_delete': [np.array([2]),np.array([0,2])]})
df
>>>> data       to_delete
     [1,2,3,4]    [2]
     [0,1,2]     [0,2]

Esto es con lo que quiero terminar:

new_df
>>>>   data     to_delete
     [1,2,4]       [2]
       [1]        [0,2]

Podría iterar sobre las filas a mano y calcular los nuevos datos para cada uno de esta manera:

new_data = []
for _,v in df.iterrows():
    foo = np.delete(v['data'],v['to_delete'])
    new_data.append(foo)
df.assign(data=new_data)

pero estoy buscando una mejor manera de hacer esto.

yatu:

La sobrecarga de llamar a una función numpy para cada fila realmente empeorará el rendimiento aquí. Te sugiero que vayas con listas en su lugar:

df['data'] = [[j for ix, j in enumerate(i[0]) if ix not in i[1]] 
              for i in df.values]

print(df)

       data to_delete
0  [1, 2, 4]       [2]
1        [1]    [0, 2]

Tiempos en un 20Kmarco de datos de fila:

df_large = pd.concat([df]*10000, axis=0)

%timeit [[j for ix, j in enumerate(i[0]) if ix not in i[1]] 
         for i in df_large.values]
# 184 ms ± 12.4 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

%%timeit 
new_data = []
for _,v in df_large.iterrows():
    foo = np.delete(v['data'],v['to_delete'])
    new_data.append(foo)

# 5.44 s ± 233 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit df_large.apply(lambda row: np.delete(row["data"], 
                       row["to_delete"]), axis=1)
# 5.29 s ± 340 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

los pandas derivan los valores faltantes en la columna en función de los valores de otra columna

Pandas: imprime los valores de una columna en función de los valores de otra columna

Cómo crear la columna en pandas en función de los valores de otra columna

restar valores a en la columna en R en función de los valores en otra columna

Pandas groupby: cambie los valores en una columna en función de los valores en otra columna

restablecer los valores de celda en función de los valores en otra columna en R

Usando pandas, ¿cómo asignar los valores en la columna según los valores de otra columna?

Elegir los valores de la columna en función de los valores máximos de otra columna

Elegir los valores de la columna en función de los valores máximos de otra columna

Python pandas: cambie los valores en la columna a booleanos según el contenido de otra columna

Cómo llenar columnas en función de los valores nulos en otra columna en pandas

Pandas: reordenar los valores en una columna dentro de los grupos que se crean en función de otra columna

Los pandas sobrescriben los valores en la columna de forma selectiva según la condición de otra columna

Reemplazar los valores de columna de acuerdo con los valores correspondientes de otra columna en Pandas

Reemplazar los valores de columna de acuerdo con los valores correspondientes de otra columna en Pandas

¿Cómo restringir los valores en una columna en función de los valores de otra columna en PostgreSQL?

rellene los valores de NaN (columna1) en la columna existente en función de otra columna (columna2) utilizando pandas dataframe python

Columna de cambio según los valores en otra columna en pandas

obtener elementos de la matriz en la columna en función de los valores del elemento en una matriz diferente en otra columna en pandas

r: organiza los valores en la columna según los valores únicos en otra columna dentro de un grupo

Agrupe los valores de una columna en función de los valores de otra columna en R

Cómo filtrar una columna en función de los valores de otra columna en SQL

los pandas ordenan una columna por valores en otra columna

Actualizar los valores de la columna que dependen condicionalmente de otra columna en pandas

Actualice los valores de las columnas según la condición seleccionando otra columna en Pandas

Determine los valores máximos en una columna en función de otra columna

¿Cómo contar los valores de una columna según la descripción en otra columna en pandas?

Pandas: seleccione de la columna con el índice correspondiente a los valores en otra columna

¿Hay alguna forma de completar una columna en función de los valores asociados con otra columna en Pandas?