python – 我怎么能实现像np.where这样的东西([‘value1′,’value2’]中的df [varaible])

前端之家收集整理的这篇文章主要介绍了python – 我怎么能实现像np.where这样的东西([‘value1′,’value2’]中的df [varaible])前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

嗨我想在[‘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().

最佳答案
您可以使用str.contains来检查条件满足的位置:

l = ('|').join(['Maternity leave','Student'])
m = random_sample['NAME_INCOME_TYPE'].str.contains(l)

您还可以使用.isin生成m:

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
原文链接:https://www.f2er.com/python/438942.html

猜你在找的Python相关文章