我有一个包含一些NaN值的pandas数据框,我已经将这些NaN值替换为
""
现在我的一个函数执行以下操作:
for word in row['TEXT'].split(): sum_prob += math.log(((dict_list[i].get(word,0)+10 )/(total_dict.get(word,0)+90))) text_feature_responseCoding[row_index][i] = math.exp(sum_prob/len(row['TEXT'].split()))
由于我用 “” 替换了NaN值,我得到了
division by zero error
为了避免这个特定的错误,应该如何正确地填充NaN值呢?
回答:
你可以过滤你的数据框,只保留’TEXT’列非空且不为null的行,然后遍历这个过滤后的数据框。以下是一些过滤数据框的方法示例:
df = pd.DataFrame({'TEXT': ['hello there', 'python fun', np.nan, '']})# 只保留非空行df_filtered1 = df[df['TEXT'].notnull()]# 只保留'TEXT'列不为''的行df_filtered2 = df[df['TEXT'] != '']# 非空且'TEXT'列不为''df_filtered3 = df[(df['TEXT'].notnull()) & (df['TEXT'] != '')]# 非空,且'TEXT'列包含字母(如果你只需要数字也行,但如果不是,这可能有用)df_filtered4 = df[(df['TEXT'].notnull()) & (df['TEXT'].str.contains('[A-z]'))]