我有一个 Pandas 数据框,其中包含以下分类值的调查列 - “增加、减少、中性”。我的问题是如何为这些分类值分配特定的数值,即 +1 表示增加,-1 表示减少,0 表示中性。
如何为分类变量分配特定值
数据挖掘
Python
熊猫
数据
可视化
分类数据
2022-03-12 01:52:22
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
,因为在值映射中检索到的所有值都是整数。
其它你可能感兴趣的问题