我是Python上的新手。我有一个数据框:
d = {'Categorical': ['A','B','C','A'],
'Order': ['First','Second', 'First','Second'],
'Numerical': [20,22,21,25]}
df = pd.DataFrame(data=d)
我应该处理此框架以获取以下:
Categorical Order Numerical
1 1 20
2 2 22
3 1 21
1 2 25
这里的技巧如下:
Python应该了解Categorical
列是分类的。Order
列是命令很重要的列举。
我应该在这里考虑使用什么编码?
您正在寻找方法.map()
首先,您需要一个字典,其中包含类别的"翻译"到值:
order_dict = {'First':1,'Second':2}
然后只在列上调用映射
df['Order_value'] = df.Order.map(order_dict)
Out[6]:
Categorical Order Numerical Order_value
0 A First 20 1
1 B Second 22 2
2 C First 21 1
3 A Second 25 2
使用'Categorical'
列,您可以使用ord()
df['Categorical_value'] = df.Categorical.apply(ord) - 64
Out[7]:
Categorical Order Numerical Order_value Categorical__value
0 A First 20 1 1
1 B Second 22 2 2
2 C First 21 1 3
3 A Second 25 2 1