如果Nan,熊猫会将列值移动到同一列的第一行

时间:2018-11-14 13:36:53

标签: python pandas

如何从这个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  

也就是说,

  • 将所有非NaN值移动到第一行
  • 保留所有原始列中的值

每列只有一个非NaN值。

1 个答案:

答案 0 :(得分:1)

bfillaxis=0downcast='infer' + dropna结合使用:

df = df.bfill(axis=0, downcast='infer').dropna()

print(df)
     c0  c1  c2  c3
0  5.99  12  44  49

没有downcast='infer',您将获得所有浮点数据类型:

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