熊猫宽格式转置为长格式

时间:2019-03-04 19:25:53

标签: python pandas

我有一个像这样的pandas数据框,其中有一个ID列和一堆指标列(真/假):

df_have:

ID Male  Special_Need    Teeanger
1    T      F              T
2    F      T              F

我想转置它,但仅适用于属性= True。即

df_want:

ID  Attribute
1    Male
1    Teenager
2   Special_Need

2 个答案:

答案 0 :(得分:2)

使用melt

u = df.melt(id_vars='ID', var_name='Attribute')
u.loc[u.value.eq('T'), ['ID', 'Attribute']]

   ID     Attribute
0   1          Male
3   2  Special_Need
4   1      Teeanger

答案 1 :(得分:2)

使用stack

df.set_index('ID').rename_axis('Attribute',1).stack().loc[lambda x : x=='T'].reset_index().drop(0,1)
Out[268]: 
   ID     Attribute
0   1          Male
1   1      Teeanger
2   2  Special_Need
相关问题