我有一个带有5195个不同值的分类变量,没有任何缺失值,当我使用pd.get_dummies创建虚拟变量时,它创建虚拟变量而没有任何缺失值或NAN值
df有5列和700,000行
df.head()
输出
V W U S F d
0 5 4 6 -1 1 0
1 7 4 6 1 8 1
2 7 4 7 1 4 2
输入
temp = pd.get_dummies(df["das"], prefix= "fine", sparse = True)
temp.head()
输出:
f2 f f1 f0
0 0 0 0 0
1 1 0 0 0
现在,我正在将dummy_variable转移到原始数据框
输入
df[temp.columns] = temp
df.head()
但是,我在新列中看到了所有NA值
输出:
V W U S F d f2 f f1 f0
0 5 4 6 -1 1 0 NA NA NA NA
1 7 4 6 1 8 1 NA NA NA NA
2 7 4 7 1 4 2 NA NA NA NA
此后,df具有相同数量的行和列,作为临时数据帧中的列数。
这里有什么问题,以及如何解决?
由于
答案 0 :(得分:0)
问题在于你加入两个数据框的方式,你应该做这样的事情,
pd.concat([df,temp], axis = 1)
其他数据集的示例,
在下面的例子中,我dummied Store
并加入了原始df。
df
Store DayOfWeek Open Promo StateHoliday SchoolHoliday
1 3 4 1 1 0 0
2 7 4 1 1 0 0
3 8 4 1 1 0 0
dfx = df.drop('Store',axis = 1)
dfx
DayOfWeek Open Promo StateHoliday SchoolHoliday
1 4 1 1 0 0
2 4 1 1 0 0
3 4 1 1 0 0
temp = pd.get_dummies(df["Store"], prefix='ST', sparse = True)
temp
ST_3 ST_7 ST_8
1 1 0 0
2 0 1 0
3 0 0 1
pd.concat([dfx,temp],axis=1)
DayOfWeek Open Promo StateHoliday SchoolHoliday ST_3 ST_7 ST_8
1 4 1 1 0 0 1 0 0
2 4 1 1 0 0 0 1 0
3 4 1 1 0 0 0 0 1
答案 1 :(得分:0)
上述两种方法都有效,但是,它显示了一些奇怪的原因。然而,仔细检查发现所有列都包含实际值。