嗨我想在[‘value1′,’value2’]等条件下将一个分类变量的值更改为其他值
这是我的代码:
random_sample['NAME_INCOME_TYPE_ind'] = np.where(random_sample['NAME_INCOME_TYPE'] in ['Maternity leave','Student']),'Other')
我尝试在这行代码的不同位置添加.any(),但它仍然无法解决错误.
ValueError:Series的真值是不明确的.使用a.empty,a.bool(),a.item(),a.any()或a.all().
最佳答案
您可以使用
原文链接:https://www.f2er.com/python/438942.htmlstr.contains
来检查条件满足的位置:
l = ('|').join(['Maternity leave','Student'])
m = random_sample['NAME_INCOME_TYPE'].str.contains(l)
random_sample['NAME_INCOME_TYPE'].isin(['Maternity leave','Student'])
然后使用np.where
.但是,请注意,您不仅可以根据条件指定要从中选择的两个值中的一个,还必须同时指定x和y.对于您的情况,您可以使用df [‘NAME_INCOME_TYPE’]和其他作为x和y:
random_sample['NAME_INCOME_TYPE_ind'] = np.where(m,'Other',random_sample['NAME_INCOME_TYPE'])
测试示例数据帧:
df = pd.DataFrame({'NAME_INCOME_TYPE':['word1','word2','Student']})
l = ('|').join(['Maternity leave','Student'])
m = random_sample['NAME_INCOME_TYPE'].str.contains(l)
df['NAME_INCOME_TYPE_ind'] = np.where(m,df['NAME_INCOME_TYPE'])
NAME_INCOME_TYPE NAME_INCOME_TYPE_ind
0 word1 word1
1 word2 word2
2 Student Other