开发者社区> 问答> 正文

Python:将列标题转换为单列值

我有一个看起来像的数据框

  Fever   Chill   Cough   Headache  Respiratory   Nasal   Joint Pain    Back pain   Stomach pain        
0   Y       Y        Y     NaN           NaN         NaN    NaN          NaN        NaN 
1   Y       NaN      NaN    NaN          Y           NaN    NaN          NaN        NaN 
2   Y       NaN       Y     NaN          NaN         NaN    NaN          NaN        NaN 
3   Y       NaN      NaN    NaN          NaN         NaN    Y            NaN        NaN 
4   Y       NaN      NaN    NaN          NaN         NaN    NaN          NaN        NaN 

我想将列标题转换为单列(说出症状),使新列在包含值Y时包含列标题名称。所需的列应类似于:

      Symptom
0     Fever, Chill, Cough
1     Fever, Respiratory
2     Fever, Cough
3     Fever, Joint Pain
4     Fever

我使用了堆栈的概念,但没有产生所需的输出。这是我的代码:

df[['Fever','Chill','Cough','Headache','Respiratory symptom','Nasal Symptoms','Joint Pain','Back pain','Stomach pain','Diarrhoea','Vomiting','Fatigue','Pneumonia shadow']].stack().reset_index()

谁能指导我如何获得理想的结果?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-25 00:24:53 2640 0
1 条回答
写回答
取消 提交回答
  • 让我们这么做:

    df.eq('Y').dot(df.columns+',').str[:-1]
    #df['symptom'] = df.eq('Y').dot(df.columns+',').str[:-1]
    

    回答来源:stackoverflow

    2020-03-25 00:28:04
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载