计算WoE指标时:
import numpy as np
import math
import pandas as pd
df_min_max_bin["ok"] = ((df_min_max_bin["nums_label_1"]+1)/sum_label_1)/((df_min_max_bin["nums_label_0"]+1)/sum_label_0)
df_min_max_bin["WoE"] = math.log(df_min_max_bin["ok"])
结果报错:
TypeError: cannot convert the series to <class ‘float’>
看了一下 df_min_max_bin[“ok”].dtypes 明明是float64,没错!
找答案时发现:点击这里
回答说:
math.log() 要求输入为一个数字,而不是数组,
如果是df需要用numpy.log()。
改为
df_min_max_bin[“WoE”] = np.log(df_min_max_bin[“ok”])
结果:
完美解决!!