gpt4 book ai didi

python - 在 Pandas 中反转 'one-hot' 编码

转载 作者:IT老高 更新时间:2023-10-28 20:59:18 27 4
gpt4 key购买 nike

我想从这个基本上是一个热编码的数据帧开始。

 In [2]: pd.DataFrame({"monkey":[0,1,0],"rabbit":[1,0,0],"fox":[0,0,1]})

Out[2]:
fox monkey rabbit
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 0
4 0 0 0

到这个是“反向”单热编码的。

    In [3]: pd.DataFrame({"animal":["monkey","rabbit","fox"]})
Out[3]:
animal
0 monkey
1 rabbit
2 fox

我想有一些巧妙地使用 apply 或 zip 来做瘦,但我不确定如何......有人可以帮忙吗?

我使用索引等尝试解决这个问题并没有取得多大成功。

最佳答案

更新: 我认为 ayhan是对的,应该是:

df.idxmax(axis=1)

演示:

In [40]: s = pd.Series(['dog', 'cat', 'dog', 'bird', 'fox', 'dog'])

In [41]: s
Out[41]:
0 dog
1 cat
2 dog
3 bird
4 fox
5 dog
dtype: object

In [42]: pd.get_dummies(s)
Out[42]:
bird cat dog fox
0 0.0 0.0 1.0 0.0
1 0.0 1.0 0.0 0.0
2 0.0 0.0 1.0 0.0
3 1.0 0.0 0.0 0.0
4 0.0 0.0 0.0 1.0
5 0.0 0.0 1.0 0.0

In [43]: pd.get_dummies(s).idxmax(1)
Out[43]:
0 dog
1 cat
2 dog
3 bird
4 fox
5 dog
dtype: object

旧答案:(很可能是错误答案)

试试这个:

In [504]: df.idxmax().reset_index().rename(columns={'index':'animal', 0:'idx'})
Out[504]:
animal idx
0 fox 2
1 monkey 1
2 rabbit 0

数据:

In [505]: df
Out[505]:
fox monkey rabbit
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 0
4 0 0 0

关于python - 在 Pandas 中反转 'one-hot' 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38334296/

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