【问题标题】:Python Data transformation If df[column] = "A" then df[column] = 1 - (Substitue "A" with 1)Python 数据转换 If df[column] = "A" then df[column] = 1 - (将 "A" 替换为 1)
【发布时间】:2019-11-11 04:05:25
【问题描述】:

我是 Python 新手,拥有一个大型数据集,我将为其构建多个回归模型。有几个特征在观察中使用 te 值 A-Z。我想将这些 A-Z 值替换为 1-26,以便我可以将它们包含在回归模型中。我可以使用 getdummies 但它会返回太多变量。我希望通过将“A”替换为 1,将“B”替换为 2 等来转换变量或所有变量。我对 if, then 语句的大部分搜索都执行一个函数,而不是转换数据.我使用 NP.where 来转换二进制变量,但从来没有这么大的东西。任何见解都值得赞赏。

【问题讨论】:

  • 您的数据示例和您尝试过的代码?
  • df 是否暗示熊猫数据框?添加正确的标签!
  • 帖子已按要求更新
  • @R_P_Phillips 也许您可以发布一个代码 sn-p,而不是一张照片,其中包含一个最小工作示例,说明您的数据是什么样的、您已经尝试了什么以及您希望最终实现什么?对我来说,仍然不清楚你在问什么。您想替换同一列中对应数字的字母吗?
  • 使用repl.it/languages/python3 创建一个足够复杂的可执行代码示例,以解决您的问题。在您的问题中包含此代码,您将在几分钟内收到帮助。

标签: python pandas numpy transformation substitution


【解决方案1】:

如果我正确理解了您的需求,我认为您应该创建一个从大写字母到字母位置整数的映射。然后你可以使用 pandas 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)

【讨论】:

  • 这就是我要找的。谢谢!
  • 如果答案对您有用,您可以接受和/或投票! :)
【解决方案2】:

这就是我最终的结果。它工作得很好,可以通过更改列名来复制。谢谢。

Disq_and_Qual_flag_Mapped = { np.nan : 0, 'A' : 1, 'B' : 2, 'C' : 3, 'D' : 4,  'E' : 5, 'F' : 6, 'G' : 7, 'H' : 8, 'I' : 9,
                             'J' : 10, 'K' : 11, 'L' : 12, 'M' : 13, 'N' : 14, 'O' : 15, 'P' : 16, 'Q' : 17, 'R' : 18, 'S' : 19,
                             'T' : 20, 'U' : 21, 'V' : 22, 'W' : 23, 'X' : 24, 'Y' : 25, 'Z' : 26}


df['Disq_and_Qual_flag2'] = df['Disq_and_Qual_flag'].map(Disq_and_Qual_flag_Mapped)

df.head()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2014-03-13
    • 2019-03-23
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多