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

Python 如果为Nan,则将列值移动到同一列中的第一行,python,pandas,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 c0 c1 c2 c3 0 5.99 12 44 49 对于此df c0 c1 c2 c3 0 5.99 NaN

如何从这个
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
     c0   c1   c2   c3 
0  5.99   12   44   49  
对于此
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
     c0   c1   c2   c3 
0  5.99   12   44   49  
就是

  • 将所有非NaN值移到第一行
  • 将所有值保留在原始列中
每列只有1个非NaN值。

轴=0
downcast='infer'
+:

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

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

not
NaN
值的数量是否保证在所有列中都相等?
df.bfill(0).dropna()
?每列只有一个非NaN值。@Sandeep Kadapa:with
bfill(0)
事实上,not
bfill(1)
。谢谢
bfill(axis=0,downcast='infer')
的附加值是多少?当
bfill(0)
@luckspan
downcat='infer'
将可能的整数值转换为int数据类型时,它似乎工作得很好,因为如果使用
bfill(0)
则可以获得所有浮点数据类型,但使用此选项,某些列将更改为int数据类型。正在等待时间段过去:-)@luckspan没有问题。