如何为分类变量分配特定值

数据挖掘 Python 熊猫 数据 可视化 分类数据
2022-03-12 01:52:22

我有一个 Pandas 数据框,其中包含以下分类值的调查列 - “增加、减少、中性”。我的问题是如何为这些分类值分配特定的数值,即 +1 表示增加,-1 表示减少,0 表示中性。

2个回答

基于@grov's answer,您也可以map直接在列上使用,如下所示:

df['col1_numerical'] = df['col1'].map({
    "Increased": 1,
    "Decreased": -1,
    "Neutral": 0
})

从字符串值映射到特定数值的一种可能方法是使用 Python 字典作为查找表。查找表可用于列中带有.apply(func)on 的列中的每个值。

import pandas as pd
l = [{'col1':'Increased'},{'col1':'Decreased'},{'col1':'Neutral'}]
df = pd.DataFrame(l)
print(df)    

输出:

        col1
0  Increased
1  Decreased
2    Neutral

创建映射并应用:

value_map_d = {'Increased':1,'Neutral':0,'Decreased':-1}
df['col1_numerical'] = df['col1'].apply(lambda x: value_map_d.get(x))
print(df)

输出:

        col1  col1_numerical
0  Increased               1
1  Decreased              -1
2    Neutral               0

在上面的示例中,我读取了值列col1并将数字代码写入数据框中名为 的新列col1_numerical原始列是 dtype object,输出列是 dtype int64,因为在值映射中检索到的所有值都是整数。