使用python替换datafram中特定列中的值
这是计算evidance的权重的代码 #好是零,坏是一 离散无序变量的进化函数权重 所以现在,如果我想用列Woe is-0978021 stc中的值替换business_类别中的任何值,例如A,现在我使用下面的代码这样的for循环使用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
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')