我有一个 (250, 33866) 数据框。如您在图片中看到的,所有值都NaN在每行的末尾。我想将这些NaN值移到数据框的左侧。同时我想将0列(引用 Id)保留在其位置(保持第一列)。
NaN
0
我试图定义一个循环遍历所有行和列的函数来执行此操作,但发现对于大数据来说,这样做效率很低。还有其他选择吗?谢谢
您可以反转列df,删除 NaN;构建 DataFrame 并将其反转回来:
df
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.0