我无法找到任何明确的答案,我认为这是一个简单的问题。 这适用于 Python 3。 应用函数、循环等时有哪些提示和技巧......当您的列同时具有空值和非空值时,在您的数据上?
这是我今天清理一些数据时遇到的例子。我有一个函数,它从合并的数据帧中获取两列,然后计算一个比率,显示两个字符串的相似程度。
进口:
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()
这是我在我的代码示例中调用该函数:
merged['NameMatchRatio'] = merged.apply(partial(apply_sm, c1='CLIENT NAME', c2='ClientName'), axis=1)
CLIENT NAME 没有空值,而 ClientName 确实有空值(当我尝试应用我的函数时会抛出错误)。 如何在忽略 NaN 值的同时应用我的函数(在任一列中以防万一)?
感谢您的时间和帮助。
您可以使用math.isnan检查值是否为nan并跳过它。或者,您也可以将 nan 替换为零或其他内容,然后在其上应用您的函数。这真的取决于你想要实现什么。
一个简单的例子:
import math
test_variable = math.nan
if math.isnan(test_variable):
print("it is a nan value")
只需在你认为合适的情况下将此逻辑合并到你的代码中。
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