2017-10-18 1 views
0

Ich konnte keine klaren Antworten auf etwas finden, was ich für eine einfache Frage halte. Dies ist für Python 3. Was sind einige Ihrer Tipps und Tricks beim Anwenden von Funktionen, Schleifen usw. auf Ihre Daten, wenn Ihre Spalte sowohl Null- als auch Nicht-Null-Werte hat?Ignorieren von NaN/Null-Werten beim Durchschleifen von Daten

Hier ist das Beispiel, in das ich geriet, als ich heute einige Daten putzte. Ich habe eine Funktion, die zwei Spalten aus meinem zusammengeführten Datenframe nimmt und dann ein Verhältnis berechnet, das zeigt, wie ähnlich zwei Strings sind.

Importe:

from difflib import SequenceMatcher 
import pandas as pd 
import numpy as np 
import pyodbc 
import difflib 
import os 
from functools import partial 
import datetime 

meine Funktion:

def apply_sm(merged, c1, c2): 
     return difflib.SequenceMatcher(None, merged[c1], merged[c2]).ratio() 

Hier ist mir die Funktion in meinem Code Beispiel Aufruf:

merged['NameMatchRatio'] = merged.apply(partial(apply_sm, c1='CLIENT NAME', c2='ClientName'), axis=1) 

CLIENT Der Name hat keine Nullwerte, während Client hat Null-Werte (die Fehler auswerfen, wenn ich versuche, meine Funktion anzuwenden). Wie kann ich meine Funktion anwenden, während ich die NaN-Werte ignoriere (in jeder Spalte nur für den Fall)?

Vielen Dank für Ihre Zeit und Unterstützung.

Antwort

0

können Sie math.isnan verwenden um zu überprüfen, ob ein Wert nan ist und es überspringen. Alternativ können Sie auch nan durch null oder etwas anderes ersetzen und dann Ihre Funktion darauf anwenden. Es hängt wirklich davon ab, was Sie erreichen wollen.

Ein einfaches Beispiel:

import math 

test_variable = math.nan  
if math.isnan(test_variable): 
    print("it is a nan value") 

Genau diese Logik in den Code integrieren, wie Sie für richtig halten.

0
def apply_sm(merged, c1, c2): 
    if not merged[[c1,c2]].isnull().any(): 
    return difflib.SequenceMatcher(None, merged[c1], merged[c2]).ratio() 
    return 0.0 # <-- you could handle the Null case here 
Verwandte Themen