簡體   English   中英

熊貓/脾氣暴躁:如何將列數據轉換為稀疏矩陣

[英]Pandas / Numpy: How to Turn Column Data Into Sparse Matrix

我正在與Pandas和Numpy一起進行iPython項目。 我也在學習,所以這個問題可能很基本。 可以說我有兩列數據

---------------
| col1 | col2 | 
---------------
| a    | b    |
| c    | d    |
| b    | e    |
---------------

我想轉換表格的數據。

---------------------
| a | b | c | d | e |
---------------------
| 1 | 1 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
---------------------

那我想拿一個三列的版本

---------------------
| col1 | col2 | val | 
---------------------
| a    | b    | .5  |
| c    | d    | .3  |
| b    | e    | .2  |
---------------------

然后變成

---------------------------
| a | b | c | d | e | val |
---------------------------
| 1 | 1 | 0 | 0 | 0 | .5  |
| 0 | 0 | 1 | 1 | 0 | .3  |
| 0 | 1 | 0 | 0 | 1 | .2  |
---------------------------

我是Pandas和Numpy的新手,我該怎么做? 我要使用什么功能?

我認為您正在尋找pandas.get_dummies()函數和pandas.DataFrame.combineAdd方法。

In [7]: df = pd.DataFrame({'col1': list('acb'),
                           'col2': list('bde'),
                           'val': [.5, .3, .2]})

In [8]: df1 = pd.get_dummies(df.col1)

In [9]: df2 = pd.get_dummies(df.col2)

這將產生以下兩個數據幀:

In [16]: df1
Out[16]: 
   a  b  c
0  1  0  0
1  0  0  1
2  0  1  0

[3 rows x 3 columns]

In [17]: df2
Out[17]: 
   b  d  e
0  1  0  0
1  0  1  0
2  0  0  1

[3 rows x 3 columns]

可以組合如下:

In [10]: dummies = df1.combineAdd(df2)

In [18]: dummies
Out[18]: 
   a  b  c  d  e
0  1  1  0  0  0
1  0  0  1  1  0
2  0  1  0  0  1

[3 rows x 5 columns]

最后一步是將val列復制到新的數據框中。

In [19]: dummies['val'] = df.val

In [20]: dummies
Out[20]: 
   a  b  c  d  e  val
0  1  1  0  0  0  0.5
1  0  0  1  1  0  0.3
2  0  1  0  0  1  0.2

[3 rows x 6 columns]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM