Fusionar dos diccionarios en Python 3.5

logo python

Fusionar dos diccionarios en Python 3.5, es algo que puede resultar común en nuestra aplicación.

El procedimiento varia según la versión de Python que usemos, en nuestro caso es la 3.5 , siguiendo las indicaciones de las convenciones PEP 448

Lo que obtenemos es un nuevo diccionario t , con todos los valores, donde están sobreescritos los valores del segundo diccionario (b), por los del primero (a)

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

“….El amor siempre empieza soñando y termina en insomnio“

JArjona

Uso de staticmethod en Python

logo python

En otros artículos he hablado de decoradores, en este, me referiré al uso de staticmethod en Python y sus características.

Todos sabemos que Python está orientado a objetos y que las clases son la base de su programación, por eso el uso de decoradores es una ayuda importante en el manejo de estas.

staticmethod es un decorador que nos permite usar una funcion dentro de una clase sin que esta reciba argumentos.

Otros artículos sobre decoradores

Su forma de escribirlo, es colocando una arroba delante

@staticmethod

Este decorador permite llamar a una clase, aunque esta aun no haya sido convertida en un objeto.

Veamos un ejemplo, que ya he empleado al hablar de decoradores antes:

class boxeador(object):
    def __init__(self):
        pass
    @staticmethod
    def esquina():
        print("Has tenido suerte, tu esquina aun no tiene color")

def main():
    b = boxeador()
    b = b.esquina()
    

if __name__ == '__main__':
    main()

Como ven hemos podido llamar a esquina() sin que esta tenga ningún parámetro.

 Si eliminamos el decorador recibiríamos este error:

TypeError                                 Traceback (most recent call last)
<ipython-input-22-0a10128b3e82> in <module>
     12 
     13 if __name__ == '__main__':
---> 14     main()

<ipython-input-22-0a10128b3e82> in main()
      8 def main():
      9     b = boxeador()
---> 10     b = b.esquina()
     11 
     12 

TypeError: esquina() takes 0 positional arguments but 1 was given
'

Esto nos está indicando un error de tipo, que nos dice que a pesar de que la función esquina no tiene argumentos (parámetros),  la hemos llamado como si lo tuviera.

Y hasta aquí, como siempre espero que sirva de ayuda a alguien.

Un saludo

Entrena duro y en silencio, que el éxito sea tu grito

D

Cambiar el nombre a una columna con Pandas

logo python

Las vías que conozco,  para cambiar el nombre a una columna son tres . Podemos hacerlo con el método rename(), el cual puede aplicarse directamente a la columna, o pasarlo a través de una funcion lambda.

Ojo, es posible que haya más posibilidades, me refiero a las que uso y conozco.

Cambiar el nombre a una columna con Pandas

El método rename(),  se utiliza justo para modificar la etiqueta de los ejes, al aplicarlo nos devolverá un nuevo dataframe con los valores aplicados. Su sintaxis es:

dataframe.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors='ignore')

maper: Ya sea un diccionario o una función , indica las transformación a aplicar  al eje dado. Este parámetro y el eje se emplean para indicar que valores y ejes recibirán el cambio.

index: Nos permite establecer el eje. Si empleamos maper, index =0 , es lo mismo que maper = index

columns: Indica las columnas, si su valor es cero o se ignora, significa que es el mismo que maper.

axis: tiene por defecto el valor 0, que indica el índice, el valor 1 indica columnas. Pueden emplearse colocando el nombre del eje(índice, columnas), o el numero (0,1). El valor que recibe por defecto es el del índice.

copy: Su valor determinado es True, y esto garantiza copiar también los datos subyacentes.

inplace: valor por defecto False, si se convierte a True, al devolver el nuevo dataframe la copia anterior se ignora.

level: valor por defecto None, indica el numero o nombre del nivel. Si existen índices multiples solo modificara en el nivel indicado.

error: acepta raise o ignore, y ese último es su valor por defecto. Ignora el error del tipo keyerror, cuando index o columns contienen etiquetas que no existen.

Tenemos el siguiente dataframe:

Aplicándolo directamente seria algo asi:

Renombramos varias columnas usando mapping en las columnas Unnamed: 0 e Ischaemic heart disease, para ello pasamos los valores nuevos, en forma de diccionario.

Renombremos ahora los indices

Esto también podría lograrse escribiendo

data_df.rename({0: 'Año1', 1: 'Año1', 2: 'Año3'}, axis='index')

Incluso podemos cambiar el estilo :

A través de una función lambda:

Y esto es todo

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

…. hay que levantarse cada mañana con una esperanza y dormirse cada noche con una meta….

Y
Translate »