gpt4 book ai didi

python - 我怎么能实现类似 np.where(df[variable] in ['value1' ,'value2' ])

转载 作者:太空狗 更新时间:2023-10-30 01:18:12 25 4
gpt4 key购买 nike

您好,我想在 ['value1','value2'] 这样的条件下将一个分类变量的值更改为 other

这是我的代码:

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()。

最佳答案

使用Categorical Data对于分类变量

在处理分类时,您可以替换类别而不是替换字符串。这具有内存和性能优势,因为 Pandas 在内部对分类数据使用因式分解。

df = pd.DataFrame({'NAME_INCOME_TYPE': ['Employed', 'Maternity leave',
'Benefits', 'Student']})

# turn object series to categorical
label_col = 'NAME_INCOME_TYPE'
df[label_col] = df[label_col].astype('category')

# define others
others = ['Maternity leave', 'Student']
others_label = 'Other'

# add new category and replace existing categories
df[label_col] = df[label_col].cat.add_categories([others_label])
df[label_col] = df[label_col].replace(others, others_label)

print(df)

NAME_INCOME_TYPE
0 Employed
1 Other
2 Benefits
3 Other

您还可以使用方法链更简洁地编写此代码:

# define others
others, others_label = ['Maternity leave', 'Student'], 'Other'

# turn to categorical, add category, then replace
df['NAME_INCOME_TYPE'] = df['NAME_INCOME_TYPE'].astype('category')\
.cat.add_categories([others_label])\
.replace(others, others_label)

关于python - 我怎么能实现类似 np.where(df[variable] in ['value1' ,'value2' ]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53978793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com