我有一个与字母和数字混合的变量。字母范围从A:Z,数字范围从2:8。我想重新编码这个变量,以便它全部是数字,字母A:Z现在变成数字1:26而数字2:8变成数字27:33。
例如,我想要这个变量:
src="http://www.hikvisionindia.com/products/network-camera"
成为这个:
Var1 = c('A',2,3,8,'C','W',6,'T')
在R中我可以使用'匹配'这样做:
Var1 = c(1,27,28,33,3,23,31,20)
如何使用python执行此操作?熊猫?
谢谢
答案 0 :(得分:2)
制作字典并映射值:
import string
import numpy as np
dct = dict(zip(list(string.ascii_uppercase) + list(np.arange(2, 9)), np.arange(1, 34)))
# If they are strings of numbers, not integers use:
#dct = dict(zip(list(string.ascii_uppercase) + ['2', '3', '4', '5', '6', '7', '8'], np.arange(1, 34)))
df.col_name = df.col_name.map(dct)
一个例子:
import pandas as pd
df = pd.DataFrame({'col': [2, 4, 6, 3, 5, 'A', 'B', 'D', 'F', 'Z', 'X']})
df.col.map(dct)
输出:
0 27
1 29
2 31
3 28
4 30
5 1
6 2
7 4
8 6
9 26
10 24
Name: col, dtype: int64
答案 1 :(得分:1)
我认为这可以帮到你 Replacing letters with numbers with its position in alphabet
然后你只需{d}栏上的apply
dt.Var1.apply(alphabet_position)
你也可以试试这个
for i in range(len(var1)):
if type(var1[i]) == int:
var1[i] = var1[i] + 25
else:
var1[i] = ord(var1[i].lower()) - 96