将pandas dummy添加到numpy数组中?

时间:2018-05-11 17:27:33

标签: python pandas numpy

我有一个代表森林火灾的数据集。该数据集具有数字特征和分类特征。这些分类是日期和月份。我将这些分类值更改为数字,例如:

Jan -> 1
Feb -> 2
March ->3
.
.
Dec -> 12

Mon -> 1
Tue -> 2
.
.
Sun ->7

但使用这种方法并不正确。我应该使用假人来使其正确。

我的数据集的一小部分是:

7   5   mar fri 86.2    26.2    94.3    5.1 8.2 51  6.7 0
7   4   oct tue 90.6    35.4    669.1   6.7 18  33  0.9 0
7   4   oct sat 90.6    43.7    686.9   6.7 14.6    33  1.3 0

我想我必须把它改成

7   5   [0,0,1,0,0,0,0,0,0,0,0,0]   [0,0,0,0,1,0,0] 86.2    26.2    94.3    5.1 8.2 51  6.7 0
7   4   [0,0,0,0,0,0,0,0,0,1,0,0]   [0,1,0,0,0,0,0] 90.6    35.4    669.1   6.7 18  33  0.9 0
7   4   [0,0,0,0,0,0,0,0,0,1,0,0]   [0,0,0,0,0,1,0] 90.6    43.7    686.9   6.7 14.6    33  1.3 0

现在我做了什么:

data[:, 2] = pandas.get_dummies(data[:,2])
data[:, 3] = pandas.get_dummies(data[:,3])

这种方法并不令人满意。我写这篇文章时就知道了。

could not broadcast input array from shape (517,12) into shape (517)

如何将假人合并到我的numpy阵列?

1 个答案:

答案 0 :(得分:1)

比你尝试的更容易:

import pandas as pd

df = pd.read_clipboard()
df1 = pd.get_dummies(df)

df
Out[33]: 
   a  b    m    d     e     f      g    h     i   j    k  l
0  7  5  mar  fri  86.2  26.2   94.3  5.1   8.2  51  6.7  0
1  7  4  oct  tue  90.6  35.4  669.1  6.7  18.0  33  0.9  0
2  7  4  oct  sat  90.6  43.7  686.9  6.7  14.6  33  1.3  0


df1
Out[35]: 
   a  b     e     f      g    h     i   j    k  l  m_mar  m_oct  d_fri  d_sat  \
0  7  5  86.2  26.2   94.3  5.1   8.2  51  6.7  0      1      0      1      0   
1  7  4  90.6  35.4  669.1  6.7  18.0  33  0.9  0      0      1      0      0   
2  7  4  90.6  43.7  686.9  6.7  14.6  33  1.3  0      0      1      0      1   

   d_tue  
0      0  
1      1  
2      0