在我的定性变量列上进行分类

Make categories on my qualitative variable column

我需要将定性变量分类: 例如:在我的定性专栏之一(“包装”)上, 我必须将所有塑料数据(如“塑料”、“薄膜塑料”)fr-film_plastic 归入“塑料”类别。

我必须制作几个类别,例如塑料、纸板、金属。

我用str.extract解决了这个问题,但是多维键有问题。

plastique = data.loc[data['packaging_tags'].str.contains("plas", regex= True, na=False)]
>>> print(plastique['packaging_tags'].unique().tolist())
'teabag-in-plastic-in-cardboard-box', 'plastic-pouch', 'plastica', 'clamshell,plastic,fresh', 'plastic,hdpe', 'bolsa,plastico', 'en-mixed-plastic-bag,en-pet-lid', 'carton,metal,plastic,tray,en-card-box,en-pet-tray', 'en-mixed-plastic-sleeve', 'empaque-de-plastico', 'en-mixed-plastic-packet,en-pet-tray', 'sacchetto-di-plastica', 'carton,glass,plastic', 'en-card-box,en-mixed-plastic-film', 'en-card-box,en-mixed-plastic-wrapper', 'en-glass-jar,en-other-plastic-cap', 'en-mixed-plastic-unknown'

在使用 str.extractstr.contains 时,我得到 ValueError:

plastique = data.loc[data['packaging_tags'].str.extract("([^,']{0,15}plas[^,']{1,30})")]
>>> print(plastique['packaging_tags'].unique().tolist()) 
ValueError: Cannot index with multidimensional key

然后我想制作一个要使用的组的字典:

dict_col = {'Carton': data.loc[data['packaging_tags'].str.extract("([^,]{0,15}car[^,]{1,30})")],
            'Plastique':data.loc[data['packaging_tags'].str.extract("([^, ]{0,15}plas[^,]{1,30})"]}

d = {k: oldk for oldk, oldv in dict_col.items() for k in oldv}

data['packaging_tags'] = data['packaging_tags'].map(d)

可能是这样的:

import numpy as np

cond = [
    df['packaging_tags'].str.contains(('^plas$'), case=False, regex=True),
    df['packaging_tags'].str.contains(('^met$'), case=False, regex=True),
    df['packaging_tags'].str.contains(('^card$'), case=False, regex=True)
]

choice = ['PLASTIC', 'METAL', 'CARDBOARD']

data['cat_var'] = np.select(cond, choice)