在python中从多个变量创建虚拟变量

2024-05-14 11:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难从这样的数据集创建虚拟变量:

x = pd.DataFrame({'Temp':['Hot','Cold','Warm','Cold'],'Temp_2':[np.nan,'Warm','Cold',np.nan]

请注意,两个变量(热、冷或热)中的值相同

    Temp    Temp_2
0   Hot     NaN
1   Cold    Warm
2   Warm    Cold
3   Cold    NaN

因此,我的问题是,当使用pd.get_假人时,函数不考虑这种关系,而是独立地编码这两个变量

    Temp_Cold   Temp_Hot    Temp_Warm   Temp_2_Cold      Temp_2_Warm
0       0           1           0              0               0
1       1           0           0              0               1
2       0           0           1              1               0
3       1           0           0              0               0

有没有办法把它编成这样

    Cold    Hot Warm
0     0      1    0
1     1      0    1
2     1      0    1
3     1      0    0

谢谢


Tags: 数据函数dataframe编码get关系npnan
1条回答
网友
1楼 · 发布于 2024-05-14 11:28:01

您可以这样做:

x = pd.DataFrame({'Temp':['Hot','Cold','Warm','Cold'],'Temp_2':[np.nan,'Warm','Cold',np.nan]})
print(x)
a = pd.get_dummies(x, prefix=['',''])
b = a.groupby(lambda x:x, axis=1).sum()
print(b)

它不是很干净,但很管用。使用前缀允许在由temp和temp_2生成的列中具有相同的名称

   _Cold  _Hot  _Warm
0      0     1      0
1      1     0      1
2      1     0      1
3      1     0      0

相关问题 更多 >

    热门问题