我的数据框如下:
Files attr_1 attr_2 attr_3
file_1 X X X
file_2 X
file_3 X X
我想将其转换为:
Files attr
file_1 attr_1
file_1 attr_2
file_1 attr_3
file_2 attr_2
file_3 attr_1
file_3 attr_3
我发现最接近的是这个问题:Reconstruct a categorical variable from dummies in pandas
但是我要使用stack()
方法,我需要每个文件/属性只有一行,即以下内容:
Files attr_1 attr_2 attr_3
file_1 X
file_1 X
file_1 X
file_2 X
file_3 X
file_3 X
不幸的是,这不是我的情况。
最干净的方法是什么?
答案 0 :(得分:1)
首先将Files
设置为索引,然后设置stack()
,然后设置reset_index()
df = (df.set_index('Files')
.stack()
.reset_index()[['Files', 'level_1']]
.rename(columns={'level_1': 'attr'})
)