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