es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Forma alternativa de utilizar Dask loc como el operador Pandas loc | = que no funciona en Dask.

Para col1 en columns_1:
para col2 en columns_2:
df.loc[df[‘cualquier_columna_en_df’] == col2, col1] = 0

Lo que quiero: ¡Quiero un código / forma alternativa de hacer esto en Dask! Funcionando en pandas.
Problema: ¿No se puede usar assign (=) en Dask al usar df.loc porque no se admite inplace?
Explicación: ¡Quiero asignar 0 / valor donde el condicionamiento se cumple y retornar el dataframe! (¡No serie!)
Intenté usar mask, map_partitions con df.replace (funcionando bien para esta manipulación de valor de 1 columna simple y devolviendo el dataframe como se requiere) …

def replace(x: pd.DataFrame) -> pd.DataFrame:
return x.replace(
{‘cualquier_columna_para_reemplazar_valor’: [np.nan]},
{‘cualquier_columna_para_reemplazar_valor’: [0]}
)
df = df.map_partitions(replace)

¿Cómo hacerlo para el primer código? y devuelve un dataframe.

Gracias de antemano, por favor ayúdame Dask Experts soy nuevo en dask y lo estoy explorando …

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede usar df.mask para lograr el mismo resultado que el primer código. La sintaxis es similar a df.loc, pero devuelve un dataframe en lugar de una serie.


    para col1 en columnas_1:
    para col2 en columnas_2:
    df = df.mask(df['cualquier_columna_en_df'] == col2, {col1: 0})

Comments are closed.