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):
- Ya sé cómo repetir n veces, mi pregunta es cómo aplicarlo a un diccionario con dataframes.
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:
Esto crea un nuevo diccionario
d_new
donde cada valor es el resultado de aplicar la función al valor correspondiente en el diccionario originald
. El métodoitems()
se utiliza para iterar sobre los pares clave-valor end
, 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).