Python数据转换如果df [column] =“ A”,则df [column] = 1-(用1代替“ A”)

问题描述 投票:0回答:1

我是Python的新手,拥有一个庞大的数据集,我将为其构建多个回归模型。观测中有几个使用te值A-Z的功能。我想将这些A-Z值替换为1-26,以便可以将它们包括在回归模型中。我可以使用getdummies,但是它将返回太多变量。我希望对变量或所有可能的变量进行转换,方法是将“ A”替换为1,将“ B”替换为2,以此类推。我大部分的搜索if,then语句执行的功能与转换数据相反。我已经使用NP.where来转换二进制变量,但是从来没有这么大的东西。任何见解都受到赞赏。

python pandas numpy transformation substitution
1个回答
0
投票

如果我正确理解了您的需求,我认为您应该创建从大写字母到字母位置整数的映射。然后,您可以使用熊猫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)
© www.soinside.com 2019 - 2024. All rights reserved.