为了账号安全,请及时绑定邮箱和手机立即绑定

我怎么能实现类似 np.where(df[varaible]

我怎么能实现类似 np.where(df[varaible]

白衣染霜花 2021-09-28 21:00:56
我想将一个分类变量的值更改other为以下条件['value1','value2']这是我的代码:random_sample['NAME_INCOME_TYPE_ind'] = np.where(random_sample['NAME_INCOME_TYPE'] in ['Maternity leave', 'Student']), 'Other')我尝试.any()在这行代码的不同位置添加,但仍然无法解决错误。ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您可以使用str.contains检查条件满足的位置:


l = ('|').join(['Maternity leave', 'Student'])

m = random_sample['NAME_INCOME_TYPE'].str.contains(l)

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


random_sample['NAME_INCOME_TYPE'].isin(['Maternity leave', 'Student'])

然后使用np.where. 但是,请注意,您不能根据条件仅指定要从中选择的两个值之一,您必须同时指定x和y。对于您的情况,您可以使用 df['NAME_INCOME_TYPE']and otheras xand 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, 'Other', df['NAME_INCOME_TYPE'])


       NAME_INCOME_TYPE NAME_INCOME_TYPE_ind

0            word1                word1

1            word2                word2

2          Student                Other


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信