get_dummies允许将分类变量转换为虚拟变量。除了重构类别变量的微小操作之外,是否有一个首选/快捷的方法来执行此操作?从大熊猫的假人重建分类变量
9
A
回答
6
In [46]: s = Series(list('aaabbbccddefgh')).astype('category')
In [47]: s
Out[47]:
0 a
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 e
11 f
12 g
13 h
dtype: category
Categories (8, object): [a < b < c < d < e < f < g < h]
In [48]: df = pd.get_dummies(s)
In [49]: df
Out[49]:
a b c d e f g h
0 1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0
3 0 1 0 0 0 0 0 0
4 0 1 0 0 0 0 0 0
5 0 1 0 0 0 0 0 0
6 0 0 1 0 0 0 0 0
7 0 0 1 0 0 0 0 0
8 0 0 0 1 0 0 0 0
9 0 0 0 1 0 0 0 0
10 0 0 0 0 1 0 0 0
11 0 0 0 0 0 1 0 0
12 0 0 0 0 0 0 1 0
13 0 0 0 0 0 0 0 1
In [50]: x = df.stack()
# I don't think you actually need to specify ALL of the categories here, as by definition
# they are in the dummy matrix to start (and hence the column index)
In [51]: Series(pd.Categorical(x[x!=0].index.get_level_values(1)))
Out[51]:
0 a
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 e
11 f
12 g
13 h
Name: level_1, dtype: category
Categories (8, object): [a < b < c < d < e < f < g < h]
所以我认为我们需要一个'做'这个函数,因为它似乎是一个自然操作。也许get_categories()
,看到here
6
这是一个几年,所以这很可能不是一直在pandas
工具包回来时,这个问题原本问,但这种做法似乎更容易一些给我。 idxmax
将返回对应于最大元素的索引(即具有1
的索引)。我们做axis=1
,因为我们想要1
出现的列名称。
编辑:我没有打扰使它只是一个字符串的类别,但你可以像@Jeff那样用pd.Categorical
(和pd.Series
,如果需要)包装它。
In [1]: import pandas as pd
In [2]: s = pd.Series(['a', 'b', 'a', 'c'])
In [3]: s
Out[3]:
0 a
1 b
2 a
3 c
dtype: object
In [4]: dummies = pd.get_dummies(s)
In [5]: dummies
Out[5]:
a b c
0 1 0 0
1 0 1 0
2 1 0 0
3 0 0 1
In [6]: s2 = dummies.idxmax(axis=1)
In [7]: s2
Out[7]:
0 a
1 b
2 a
3 c
dtype: object
In [8]: (s2 == s).all()
Out[8]: True
相关问题
- 1. 熊猫将数字变量重新编码为分类变量
- 2. 重塑熊猫据帧分组变量
- 3. 熊猫降低分类变量
- 4. 创建/重命名分类与熊猫
- 5. 如何计算大熊猫分类变量的滚动计数
- 6. 重新编码熊猫的分类变量
- 7. 从熊猫分类中的分类箱
- 8. 熊猫假人编码字符串
- 9. Python的大熊猫麻烦变量
- 10. 大熊猫 - 让未分类分级列
- 11. 计算大熊猫分类的“浓度”
- 12. 继承大熊猫的建筑类DataFrame
- 13. 重建熊猫DataFrame
- 14. 以“ - ”分隔的大熊猫
- 15. 大熊猫分类数据转换
- 16. 大熊猫从GROUPBY
- 17. 大熊猫 - 从DF
- 18. 大熊猫从dataframe.loc
- 19. 大熊猫,从DF2
- 20. 大熊猫从GROUPBY
- 21. 单变量类别散点图熊猫
- 22. 熔体假人分为一组变量
- 23. 变化真/假值离散值大熊猫数据框与np.where()
- 24. 熊猫数据框中的分类变量?
- 25. 分割大熊猫被列变量数据框
- 26. 重塑在大熊猫
- 27. 重塑与大熊猫
- 28. 重新组织大熊猫
- 29. 大熊猫:重组DataFrames
- 30. 创建大熊猫从元组