r语言 - 匹配以重新编码 python 中的字母和数字(熊猫)



我有一个混合了字母和数字的变量。字母范围从 A:Z,数字范围从 2:8。我想重新编码这个变量,使其全部为数字,字母 A:Z 现在变为数字 1:26,数字 2:8 变为数字 27:33。

例如,我想要这个变量:

Var1 = c('A',2,3,8,'C','W',6,'T')

要变成这样:

Var1 = c(1,27,28,33,3,23,31,20)

在 R 中,我可以使用"匹配"来做到这一点,如下所示:

Var1 = as.numeric(match(Var1, c(LETTERS, 2:8)))

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

谢谢

制作字典并映射值:

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

我认为这可以帮助您 用数字替换字母及其在字母表中的位置

那么你只需要在你的DF列上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

最新更新