pandas 用ID替换类别

vd2z7a6w  于 2023-04-28  发布在  其他
关注(0)|答案(1)|浏览(97)

所以,一方面,我有一个表,其中有类别,所有类别都有一个特定的ID。另一方面,我有一个数据框,其中有所有产品,每个产品都有一个categorie。
我想要的是将类别名称更改为Dataframe中的确切ID

dict_categorias = {}

    for tuplo in IdCat:
       dict_categorias[tuplo[0]] = tuplo[1]
       for index,row in tabela_new.iterrows():
           if(row['Categoria']==dict_categorias[tuplo[1]]):   
               tabela_new.at[index,'Categoria'] = dict_categorias[tuplo[0]]

table是这样的

1: 'TUBO',
2: 'LEITOR',
3: 'ANTENA',
4: 'POE',

和dataframe:

Data      Código de barras  Categoria   Valor Uni (€)
 0  2022-12-31  5415306102467   LEITOR      NaN
 1  2022-12-31  3662211007819   CAIXA       NaN

我尝试为表类别创建一个字典,并将产品的类别与表类别中的类别进行比较,如果类别相等,则更改类别的Id
在上面的代码中,tuplo[0]是Id,tuplo[1]是category
这似乎有点复杂,上面的代码不工作,我不知道任何其他方法来做到这一点。有人可以帮助我吗?!!

6ojccjat

6ojccjat1#

您可以在反转表后使用map

IdCat = {1: 'TUBO', 2: 'MEMÓRIA', 3: 'ANTENA', 4: 'POE', 5: 'LEITORN', 6: 'CAIXA'}
IdCat_rev = {v: k for k, v in IdCat.items()}

tabela_new['Categoria_num'] = tabela_new['Categoria'].map(IdCat_rev)

输出:

>>> tabela_new
         Data  Código de barras Categoria  Valor Uni (€)  Categoria_num
0  2022-12-31     5415306102467   LEITORN            NaN              5
1  2022-12-31     3662211007819     CAIXA            NaN              6

>>> IdCat_rev
{'TUBO': 1, 'MEMÓRIA': 2, 'ANTENA': 3, 'POE': 4, 'LEITORN': 5, 'CAIXA': 6}

字典中缺少的值将被设置为NaN

相关问题