使用python替换datafram中特定列中的值

使用python替换datafram中特定列中的值,python,pandas,Python,Pandas,这是计算evidance的权重的代码 #好是零,坏是一 离散无序变量的进化函数权重 所以现在,如果我想用列Woe is-0978021 stc中的值替换business_类别中的任何值,例如A,现在我使用下面的代码这样的for循环 def flag_df_ISIC_4_ARAB(df_input): if (df_input['BUSINESS_CATEGORY'] == 'A'): return '-0.978021' elif (df_input['BUS

这是计算evidance的权重的代码

#好是零,坏是一

离散无序变量的进化函数权重

所以现在,如果我想用列Woe is-0978021 stc中的值替换business_类别中的任何值,例如A,现在我使用下面的代码这样的for循环


def flag_df_ISIC_4_ARAB(df_input):
    if (df_input['BUSINESS_CATEGORY'] == 'A'):
        return '-0.978021'
    elif (df_input['BUSINESS_CATEGORY'] == 'اB'):
        return '-0.977854'
    elif (df_input['BUSINESS_CATEGORY'] == 'C'):
        return '0.082918'
    elif (df_input['BUSINESS_CATEGORY'] == 'D'):
        return '0.772306'
    elif (df_input['BUSINESS_CATEGORY'] == 'H'):
        return '-0.176700'
    elif (df_input['BUSINESS_CATEGORY'] == 'أخرى'):
        return '0.955446'
      else:
        return '0'
df_input['BUSINESS_CATEGORY'] = df_input.apply(flag_df_ISIC_4_ARAB, axis = 1).astype(str)```





is there another way to replace the Woe with out using for loop 


首先创建字典,将不匹配的值传递给并替换为
'0'

d = {'A':'-0.978021','اB':'-0.977854', 'C':'0.082918', 
     'D':'0.772306', 'H': '-0.176700', 'أخرى': '0.955446'}

df_input['BUSINESS_CATEGORY'] = df_input['BUSINESS_CATEGORY'].map(d).fillna('0')

非常感谢。但我仍然必须将每个值写成'A':'-0.978021'我需要的是指定类似BUSINESS_类别的列,并将其替换为WoE的值columns@swe2010-我不明白,我想主要是因为照片上的人不明白。而且这似乎已经得到了回答

def flag_df_ISIC_4_ARAB(df_input):
    if (df_input['BUSINESS_CATEGORY'] == 'A'):
        return '-0.978021'
    elif (df_input['BUSINESS_CATEGORY'] == 'اB'):
        return '-0.977854'
    elif (df_input['BUSINESS_CATEGORY'] == 'C'):
        return '0.082918'
    elif (df_input['BUSINESS_CATEGORY'] == 'D'):
        return '0.772306'
    elif (df_input['BUSINESS_CATEGORY'] == 'H'):
        return '-0.176700'
    elif (df_input['BUSINESS_CATEGORY'] == 'أخرى'):
        return '0.955446'
      else:
        return '0'
df_input['BUSINESS_CATEGORY'] = df_input.apply(flag_df_ISIC_4_ARAB, axis = 1).astype(str)```





is there another way to replace the Woe with out using for loop 

d = {'A':'-0.978021','اB':'-0.977854', 'C':'0.082918', 
     'D':'0.772306', 'H': '-0.176700', 'أخرى': '0.955446'}

df_input['BUSINESS_CATEGORY'] = df_input['BUSINESS_CATEGORY'].map(d).fillna('0')