Pum*_*n C 5 python numpy series pandas categorical-data
嗨我想在一个other条件下改变一个分类变量的值['value1','value2']
这是我的代码:
random_sample['NAME_INCOME_TYPE_ind'] = np.where(random_sample['NAME_INCOME_TYPE'] in ['Maternity leave', 'Student']), 'Other')
Run Code Online (Sandbox Code Playgroud)
我尝试添加.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)
Run Code Online (Sandbox Code Playgroud)
您还可以m使用以下方式生成.isin:
random_sample['NAME_INCOME_TYPE'].isin(['Maternity leave', 'Student'])
Run Code Online (Sandbox Code Playgroud)
然后使用np.where. 但是,请注意,您不能仅指定根据条件从中选择的两个值之一,您必须同时指定x和y。对于您的情况,您可以使用 df['NAME_INCOME_TYPE']andother作为xand y:
random_sample['NAME_INCOME_TYPE_ind'] = np.where(m,
'Other',
random_sample['NAME_INCOME_TYPE'])
Run Code Online (Sandbox Code Playgroud)
在示例数据帧上进行测试:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |