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

如果为Nan,则将列值移动到同一列中的第一行

  •  0
  • LucSpan  · 技术社区  · 6 年前

    df ,

         c0   c1   c2   c3 
    0  5.99  NaN  NaN  NaN  
    1   NaN   12  NaN  NaN                
    2   NaN  NaN   44  NaN               
    3   NaN  NaN  NaN   49
    

    对此 df ,

         c0   c1   c2   c3 
    0  5.99   12   44   49  
    

    就是,

    每列只有1个非NaN值。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Space Impact    6 年前

    使用 bfill 具有 axis=0 downcast='infer' + dropna :

    df = df.bfill(axis=0, downcast='infer').dropna()
    
    print(df)
         c0  c1  c2  c3
    0  5.99  12  44  49
    

    没有 向下class='推断' 您可以获得所有浮点数据类型:

    print(df.bfill(0).dropna())
         c0    c1    c2    c3
    0  5.99  12.0  44.0  49.0