反向 get_dummies()

Reverse get_dummies()

使用 get_dummies()

将分类数据转换为数值数据后,我的数据框如下所示
score1 score2  country_CN country _AU category_leader category_
0.89.   0.45.   0.         1.            0              1
0.55.   0.54     1.        0             1              0

如您所见,转换后的分类列为数字列 country_CN country _AU category_leader category_

我想将它带到它的原始数据框,如下所示:

score1 score2  country category_leader 
0.89.   0.45.   AU                    
0.55.   0.54    CN            leader    

我已尝试使用此处列出的建议:

但到目前为止还没有运气。

任何帮助/线索?

您可以先将虚拟列转换为索引 DataFrame.set_index:

#
df = undummify(df.set_index(['score1','score2'])).reset_index()

或使用 DataFrame.melt, fiter rows with boolean indexing, splitting by Series.str.split and last pivoting by DataFrame.pivot 的替代解决方案:

df1 = df.melt(['score1','score2'])
df1 = df1[df1['value'].eq(1)]
df1[['a','b']] = df1.pop('variable').str.split('_', expand=True)
df1 = df1.pivot(index=['score1','score2'], columns='a', values='b').reset_index()
print (df1)
a  score1  score2 category country
0    0.55    0.54   leader      CN
1    0.89    0.45               AU