首页 > 解决方案 > 删除 NANS 列 WISE 并加入原始数据框

问题描述

我有一个带有 1000 列的 pandas 数据框,这些列是我从 sql pivot 获得的。其中一些列有一个子字符串(比如包含 ALPHA)。现在数据框的样子是这样的:(这里显示的示例是 5 个 ALPHA 列)。

数据的特征是,对于 Cols A 到 ColE 的每个唯一组合,每个 alpha 列最多有一个非空值

      input_df 
      
        ColA   ColB   ColC   ColD  ColE    ALPHA_1   ALPHA_2  ALPHA_3  ALPHA_4   ALPHA_5.......
        
          x      y      z     p     q       NAN       1        NAN      NAN       2
          
          x      y      z     p     q        2        NAN      NAN       NAN      NAN

          x      y      z     p     q        NAN      NAN      11       NAN       NAN
          
          x      y      z     p     q        NAN      NAN      NAN       15        NAN
          
          u      v      w     z     k        11      NAN       NAN      NAN        1
          
          u      v      w     z     k       NAN      NAN       34       NAN        NAN
          
          u      v      w     z     k        NAN      6       NAN      NAN        NAN
          
          u      v      w     z     k       NAN      NAN       NAN       76        NAN
          
          b      d      y     s     t        NAN       4        NAN      NAN      NAN
          
          b      d      y     s     t        NAN       NAN      8         NAN      80
          
          b      d      y     s     t        NAN       NAN      NAN       9        NAN
          
          b      d      y     s     t        88        NAN      NAN        NAN    NAN
          
                      
                  

我正在寻找的是从列中删除所有 NANS 并在 Cols AE 相同时将它们组合并合并它们。所以数据应该看起来像

        output_df  
        
        
         ColA   ColB   ColC   ColD  ColE    ALPHA_1  ALPHA_2  ALPHA_3  ALPHA_4    ALPHA_5 .......
        
        
          x      y      z     p     q       2       1        11        15         2
          
          u      v      w     z     k        11      6       34        76        1
          
          u      v      w     z     k       NAN      NAN       34       NAN        NAN
          
          u      v      w     z     k        NAN      6       NAN      NAN        NAN
          
          u      v      w     z     k       NAN      NAN       NAN       76        3
          
          b      d      y     s     t        88       4        8          9        8
          
          
          

我的计划是创建一个从 ColA 到 Col E 的 Cols
子集,然后创建一个仅包含 alpha 的 cols 子集,然后从第一个数据帧(keydf)中删除重复项,然后从第二个数据帧中的每个列中删除 NANS数据框(newdf),然后按索引连接两个数据框。

          keydf = input_df.loc[:, input_df.columns.str.contains('COL')]
          
          newdf = input_df.loc[:, input_df.columns.str.contains('ALPHA')]
    
    

但是,我被困在这个阶段,不知道如何进行。任何帮助将不胜感激。

标签: pythonsql-serverpandaspivotnan

解决方案


推荐阅读