Zwei Spalten in Pandas addieren und dabei nans beachten via lamdba-Funktion mit Bedigung

Ihr wollte in eurem Dataframe zwei Spalten addieren und dabei nans ignorieren? D.h. ihr wollt a und b addieren, sofern a und b nicht None oder null sind und a, wenn a nicht None oder null aber b None oder null ist und sonst b in die neue Spalte schreiben?

Das geht so:

add_if_notna = lambda a, b: a+b if ~np.isnan(a) and ~np.isnan(b) else a if ~np.isnan(a) else b
df['new_col'] = df['col1'].combine(df['col2'],add_if_notna)

Wenn ihr alternativ die Spalten nur addieren wollt, wenn beide Werte ungleich null / None sind, dann geht das so:

add_if_notna = lambda a, b: a+b if ~np.isnan(a) and ~np.isnan(b) else None
df['new_col'] = df['col1'].combine(df['col2'],add_if_notna)

 

Wie man aus einer PostgreSQL Datenbank direkt in einen Pandas Dataframe selektiert.

Unter der Annahme, dass ihr host, port, db_name, user_name und passwort definiert habt, könnt ihr dazu folgendes Snippet verwenden.

import pandas as pd
import pandas.io.sql as sqlio
import psycopg2

conn = psycopg2.connect(f"host='{host}' port={port} dbname='{db_name}' user={user_name} password={password}")
query = "select count(*) from table;"
df = sqlio.read_sql_query(query, conn)
conn.close()

__pycache__/-Ordner und *.pyc/*.pyo-Dateien löschen

Für den Fall, dass ihr wie ich einmal vergessen habt in eure .gitignore :

__pycache__/
*.py[cod]

einzutragen und nun auf einmal diese Folder auch auf eurem Deploymentsystem habt oder sie bei euch lokal entfernen wollt, um dann zu commiten, dann gebt das hier ein:

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

CI/CD mit gitlab für Flask-App mit docker-compose: Teil 1: Server aufsetzen.

Für die meisten meiner Projekte verwende ich gitlab und dessen CI/CD Pipelines. Falls ihr das auch tun wollt, hier einen Anleitung dazu.

Webserver

Um zu beginnen braucht ihr einen eigenen Webserver. Ich habe mir hierfür zu Testzwecken ein simples Droplet bei Digital Ocean geklickt. Das geht so:

  • auf https://www.digitalocean.com/ registrieren
  • neues Droplet anlegen:

Auf ‘Create’ klicken..

Als nächstes auf ‘Droplet’ klicken…

Ich habe eine Ubuntu 16.04 Machine genommen und aus dem “Starter Plan” die kleinste Maschine ausgewählt:

Um sie zu finden, müsst ihr auf den Pfeilknopf links klicken:

Jetzt die gewünschte Machine auswählen:

Ich habe das Droplet in Frankfurt erzeugt:

Abschließend noch einen Namen für das Droplet eingeben und dann bestätigen.

Nach kurzer Zeit erscheint euer Droplet. Ihr könnt direkt eure IP-Adresse sehen. Ein ssh-Passwort wurde euch an die E-Mail-Adresse geschickt, die ihr beim Anmelden hinterlegt habt.

Ihr könnt euch jetzt über euer terminal oder putty, wenn ihr auf Windows unterwegs seid so auf eurem System anmelden:

ssh root<eureIPAdresse>

Und nun das Passwort eingeben, dass euch per E-Mail zuschickt wurde. Fertig.