Python 为什么将虚拟变量从一个数据帧传输到另一个数据帧会创建NAN值

Python 为什么将虚拟变量从一个数据帧传输到另一个数据帧会创建NAN值,python,python-2.7,pandas,Python,Python 2.7,Pandas,我有一个分类变量,有5195个不同的值,没有任何缺失值,当我使用pd.get_dummies创建虚拟变量时,它会创建没有任何缺失值或NAN值的虚拟变量 df有5列和700000行 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 输入 输出: f2 f f1 f0 0 0 0 0 0 1 1 0 0 0 现在,我将虚拟_变量传输

我有一个分类变量,有5195个不同的值,没有任何缺失值,当我使用pd.get_dummies创建虚拟变量时,它会创建没有任何缺失值或NAN值的虚拟变量

df有5列和700000行

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
输入

输出:

  f2 f f1 f0
0 0  0 0  0
1 1  0 0  0
现在,我将虚拟_变量传输到原始数据帧

输入

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的行数和列数与temp数据帧中的列数相同

这里的问题是什么,如何解决

谢谢


问题在于如何连接两个数据帧,您应该这样做

pd.concat([df,temp], axis = 1)
其他数据集的示例, 在下面的例子中,我模拟了
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

这两种方法都描述了上述作品,然而,它显示了一些奇怪的原因。但是,仔细检查发现,所有列都包含实际值

您将需要显示一些数据,包括索引,以便人们看到这里发生了什么。您的索引在每个帧上是什么样子的?两个整数?选择
DictVectorizer
!与上面描述的问题相同。另外,我们可以使用上面的方法连接两个数据帧。这对我来说很好初始注释中缺少了
[]
。当我添加的列很少时,这两种方法都有效。当我添加7000行时,这两种方法都有相同的问题。即使我使用我尝试过的100k行,7000行也不会有问题。但很多傻瓜可能会让我们失望。
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