gpt4 book ai didi

python - 如何在 Python 的数据框中编码分类变量(系列)?

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:00 27 4
gpt4 key购买 nike

我有以下形式的字典:

{CA: California, NV: Nevada, TX: Texas}

我想转换我的数据框

{
'state':['California', 'California, 'Texas', 'Nevada', 'Texas],
'var':[100,200,300,400, 500]
}

进入

{
'state':['CA','CA','TX','NV','TX'],
'var':[100,200,300,400,500]
}

执行此操作的最佳方法是什么?

最佳答案

如果你颠倒了字典中的键和值,那么你可以只使用 map :

# to swap the keys and values:
new_map = dict (zip(my_dict.values(),my_dict.keys()))

然后调用 map :

df.state = df.state.map(new_map)

这假设您的键存在于 map 中,否则您将得到一个 KeyError raised

因此创建数据框:

In [12]:

df = pd.DataFrame({
'state':['California', 'California', 'Texas', 'Nevada', 'Texas'],
'var':[100,200,300,400, 500]
})

df
Out[12]:
state var
0 California 100
1 California 200
2 Texas 300
3 Nevada 400
4 Texas 500

[5 rows x 2 columns]

你的命令:

my_dict = {'CA': 'California', 'NV': 'Nevada', 'TX': 'Texas'}

反转键和值

new_dict = dict(zip(my_dict.values(), my_dict.keys()))

现在调用 map 来执行查找并分配回状态:

In [13]:

df.state = df.state.map(new_dict)
df
Out[13]:
state var
0 CA 100
1 CA 200
2 TX 300
3 NV 400
4 TX 500

[5 rows x 2 columns]

如果您担心某些值可能不存在,那么您可以在字典上使用 get 以便它处理 KeyError 并分配 None 作为一个值:

用'New York'设置一个新的df

In [19]:

df = pd.DataFrame({
'state':['California', 'California', 'Texas', 'Nevada', 'Texas', 'New York'],
'var':[100,200,300,400, 500, 600]
})
df
Out[19]:
state var
0 California 100
1 California 200
2 Texas 300
3 Nevada 400
4 Texas 500
5 New York 600

[6 rows x 2 columns]

现在改为调用 get:

In [25]:

df.state = df.state.map(lambda x: new_dict.get(x))
df
Out[25]:
state var
0 CA 100
1 CA 200
2 TX 300
3 NV 400
4 TX 500
5 None 600

[6 rows x 2 columns]

关于python - 如何在 Python 的数据框中编码分类变量(系列)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21277887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com