基于另一列为列赋值



我有一个这样的数据框

CategoryNumber
1
2
3
1
3

我想创建一个新列"类别",该列根据"类别编号"列中的值分配值,如下所示

CategoryNumber  Category
1               First Category
2               Second Category
3               Third Category
1               First Category
3               Third Category

我如何使用python和熊猫来做到这一点

使用map

import string
df.CategoryNumber.map(dict(zip(range(1,26),string.ascii_lowercase)))
Out[472]: 
0    a
1    b
2    c
3    a
4    c
Name: CategoryNumber, dtype: object

你可以直接从熊猫中使用CatCodes。

  1. 首先使列成为类别
  2. 呼叫cat.codes
  3. 将其分配给新列

df['Category2'] = df['CategoryNumber'].astype('category').cat.codes

CategoryNumber  Category2
0               1          0
1               2          1
2               3          2
3               1          0
4               3          2

如果您需要将其设为 A、B、C 等,请查看map

df['Letters'] = df['Category2'].map(dict(zip(df['Category2'].tolist(),string.ascii_uppercase)))
CategoryNumber  Category2 Letters
0               1          0       D
1               2          1       B
2               3          2       E
3               1          0       D
4               3          2       E

最新更新