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

2024-04-19 21:10:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我该如何从这个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值移到第一行
  • 将所有值保留在原始列中

每列只有1个非NaN值


Tags: dfnanc2c1c3c0
1条回答
网友
1楼 · 发布于 2024-04-19 21:10:05

^{}axis=0downcast='infer'+^{}一起使用:

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

相关问题 更多 >