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. 創建大熊貓從元組