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.

Aplica una función en un diccionario compuesto por DataFrames con diferentes nombres de columnas.

He estado luchando para tomar un diccionario “d” compuesto por n dataframes y aplicarles esto:

idf = idf.iloc[idf.index.repeat(idf.iloc[:,0])]

Que es una función para repetir el índice el número de veces de la columna 0 de cada dataframe. Algo como esto:

Antes: Después:

Index Index
1290 2 1290 2
1320 3 1290 2
1400 4 1320 3
1320 3
1320 3
1400 4
1400 4
1400 4
1400 4

Entonces, el diccionario “d” tiene los dataframes que se ven como la columna antes. Intenté hacerlo de esta manera para aplicar la función:

    for idf in d:
        d = idf.iloc[idf.index.repeat(idf.iloc[:,0])]

Pude hacerlo de esta manera cuando selecciono manualmente un nombre de columna, pero estos dataframes tienen diferentes nombres de columna (a propósito). Pero no puedo aplicar esto porque .iloc[ ] no funciona en cadenas (encontré extraño porque no está seleccionando los valores del diccionario, en cambio está usando la cadena del diccionario).

Si quiero recuperar el diccionario “d” con la función aplicada, ¿cómo puedo resolver esto?

¡Gracias!

Ediciones:
1. Ejemplo de imagen de uno de los dataframes dentro del diccionario “d”, recuerda que el nombre de la primera columna [0] es diferente en cada dataframe (y no debería ser cambiado por motivos de manejo de datos):

Ejemplo de imagen de uno de los dataframes dentro del diccionario "d"

  1. Ya sé cómo repetir n veces, mi pregunta es cómo aplicarlo a un diccionario con dataframes.
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de aplicar la función a todos los dataframes de un diccionario es usar una comprensión de diccionario. Aquí tienes un ejemplo:

    d_new = {key: value.iloc[value.index.repeat(value.iloc[:,0])] for key, value in d.items()}
    

    Esto crea un nuevo diccionario d_new donde cada valor es el resultado de aplicar la función al valor correspondiente en el diccionario original d. El método items() se utiliza para iterar sobre los pares clave-valor en d, y la sintaxis de comprensión de diccionario {key: value for ...} se utiliza para crear un nuevo diccionario donde cada clave es igual a la del diccionario original, y cada valor es el resultado de aplicar la función al dataframe correspondiente.

    Ten en cuenta que es posible que necesites ajustar la selección de columnas value.iloc[:,0] dependiendo de la estructura de tus dataframes (por ejemplo, si la columna de índice no es la primera columna, es posible que necesites seleccionar una columna diferente).

Comments are closed.