代码之家  ›  专栏  ›  技术社区  ›  Michael

pandas:聚合以保留第一个非NaN值[重复]

  •  1
  • Michael  · 技术社区  · 6 年前

    我有一个数据框 test_num 作为索引:

    file_num    6    7
    test_num          
    79        NaN    ↑
    148         ↑  NaN
    

    我需要减少它以保持第一个可用的方向(箭头) file_num

               direction
    test_num          
    79          ↑
    148         ↑
    

    我试过这个:

    fd.agg(lambda x: [a for a in x if a][0], axis=1)
    
    test_num
    79     NaN
    148      ↑
    
    fd.agg(lambda x: [a for a in x if a != pd.np.nan][0], axis=1)
    
    test_num
    79     NaN
    148      ↑
    

    2 回复  |  直到 6 年前
        1
  •  2
  •   piRSquared    6 年前

    您可以在 groupby

    df.groupby([*'A'*len(df.columns)], 1).first()
    
              A
    test_num   
    79        ↑
    148       ↑
    

    或者使用一个可调用的

    df.groupby(lambda x: 'A', 1).first()
    
              A
    test_num   
    79        ↑
    148       ↑
    
        2
  •  1
  •   Raunaq Jain    6 年前
    X = X.apply(lambda x: pd.Series(x.dropna().values), axis = 1)
    
            1.0
    test_num    
    79        ↑
    148       ↑