为基于另一列的列分配值

时间:2018-09-28 19:23:48

标签: python pandas calculated-columns

我有一个像这样的数据框

CategoryNumber
1
2
3
1
3

我想创建一个新列“ Category”,该列基于“ CategoryNumber”列中的值来分配值,就像这样

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

我该如何使用python和pandas

2 个答案:

答案 0 :(得分:1)

您可以直接从熊猫使用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

答案 1 :(得分:1)

使用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