将数据框文本列屏蔽为熊猫数据框中的新列

时间:2021-05-06 06:42:11

标签: python pandas

我在下面有 Pandas 数据框,我想用一个新列屏蔽 ProductId 列。将每个 id 分配给一个新的数值。我怎样才能做到这一点? 谢谢

import pandas as pd 
df=pd.DataFrame({'ProductId':['AXX11','CS22','AXX11','FV34','FV34','DF23','CS22'],'Sales': 
[10,34,23,45,23,54,65]})
df

预期结果如下:

ProductId   Mask_ProductId   Sales
   AXX1       20              10
   CS22       21              34
   AXX1       20              23
   FV34       8               45
   FV34       8               23
   DF23       12              54
   CS22       21              65

请帮忙谢谢

2 个答案:

答案 0 :(得分:3)

使用categorical

In [96]: df['Mask_ProductId'] = df.ProductId.astype('category').cat.codes

In [97]: df
Out[97]: 
  ProductId  Sales  Mask_ProductId
0     AXX11     10               0
1      CS22     34               1
2     AXX11     23               0
3      FV34     45               3
4      FV34     23               3
5      DF23     54               2
6      CS22     65               1

答案 1 :(得分:1)

使用 factorize 并添加 DataFrame.insert

df.insert(1, 'Mask_ProductId', pd.factorize(df['ProductId'])[0])
print (df)
  ProductId  Mask_ProductId  Sales
0     AXX11               0     10
1      CS22               1     34
2     AXX11               0     23
3      FV34               2     45
4      FV34               2     23
5      DF23               3     54
6      CS22               1     65