2017-10-18 1 views
0

간단한 질문이라고 생각되는 것에 대해 명확한 답을 찾을 수 없었습니다. 이것은 Python 3을위한 것입니다. 열에 null 값과 null이 아닌 값이 모두있을 때 데이터에 함수, 루프 등을 적용 할 때 유용한 팁과 트릭은 무엇입니까?데이터를 반복하면서 NaN/null 값을 무시합니다.

오늘은 일부 데이터를 정리할 때의 예입니다. 내 병합 된 데이터 프레임에서 두 개의 열을 가져와 비슷한 두 문자열이 얼마나 유사한 지 보여주는 비율을 계산하는 함수가 있습니다.

수입 :

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

내 기능 : 여기

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

내 코드 예제에서 함수 호출입니다 : CLIENTNAME 동안,

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

클라이언트 이름이 더 null 값이 없습니다를 null 값 (함수를 적용하려고하면 오류가 발생 함)이 있습니다. NaN 값을 무시하면서 함수를 적용하려면 어떻게합니까?

시간과 협조에 감사드립니다.

답변

0

당신은 값이 NaN인지 확인하고 건너 math.isnan를 사용할 수 있습니다. 또는 nan을 0 또는 다른 것으로 대체 한 다음 함수를 적용 할 수도 있습니다. 그것은 정말로 당신이 달성하기를 원하는 것에 달려 있습니다.

간단한 예 : 당신이 적합하다고 판단

import math 

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

그냥 코드에이 논리를 통합한다.

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 
관련 문제