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

我想将一个分类变量的值更改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()。


白衣染霜花
浏览 275回答 2
2回答

慕盖茨4494581

您可以使用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_ind0            word1                word11            word2                word22          Student                Other
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python