我是Python的新手,拥有一个庞大的数据集,我将为其构建多个回归模型。观测中有几个使用te值A-Z的功能。我想将这些A-Z值替换为1-26,以便可以将它们包括在回归模型中。我可以使用getdummies,但是它将返回太多变量。我希望对变量或所有可能的变量进行转换,方法是将“ A”替换为1,将“ B”替换为2,以此类推。我大部分的搜索if,then语句执行的功能与转换数据相反。我已经使用NP.where来转换二进制变量,但是从来没有这么大的东西。任何见解都受到赞赏。
如果我正确理解了您的需求,我认为您应该创建从大写字母到字母位置整数的映射。然后,您可以使用熊猫map
将这些字母映射到它们各自的位置。
import pandas as pd
import numpy as np
from string import ascii_uppercase
# Create DataFrame
df = pd.DataFrame(data={'id': [1,2,3,4,5],
'letter_flag': [np.nan, 'A', 'A', 'T', 'A']})
# Dictionary comprehension to create a mapping from uppercase letters to postions
# i.e. {'A': 1, 'B': 2, ..., 'Z': 26}
letter_mapping = {letter: str(index) for index, letter in enumerate(ascii_uppercase, start=1)}
# Create new column with the mapping
df['mapped_flag'] = df['letter_flag'].map(letter_mapping)