我有一个(250,33866)数据。正如您在图片中所看到的,所有NaN值都位于每一行的末尾。我想将这些NaN值转换为数据的左边。同时,我希望保留0列(它引用Id)在它的位置(保留第一个)。

我试图定义一个遍历所有行和列的函数来实现这一点,但我认为对于大型数据来说,这样做效率很低。还有其他选择吗?谢谢
发布于 2022-04-24 23:10:03
您可以反转df的列,删除NaNs;构建一个DataFrame并将其反转回来:
out = pd.DataFrame(df.iloc[:,::-1].apply(lambda x: x.dropna().tolist(), axis=1).tolist(), 
                   columns=df.columns[::-1]).iloc[:,::-1]例如,对于如下所示的DataFrame:
   col0  col1  col2  col3  col4
1   1.0   2.0   3.0  10.0  20.0
2   1.0   2.0   3.0   NaN   NaN
3   1.0   2.0   NaN   NaN   NaN上述代码产生:
   col0  col1  col2  col3  col4
0   1.0   2.0   3.0  10.0  20.0
1   NaN   NaN   1.0   2.0   3.0
2   NaN   NaN   NaN   1.0   2.0https://stackoverflow.com/questions/71992830
复制相似问题