我有一个这样的数据框
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。
- 首先使列成为类别
- 呼叫
cat.codes
- 将其分配给新列
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