Python 向左移动行

Python 向左移动行,python,pandas,Python,Pandas,我有一个问题: A B C 1 10 11 23 2 NaN 2 15 3 NaN 3 31 4 NaN NaN 56 我想将行向左移动,以便在索引上对齐,如下所示: A B C 1 10 11 23 2 2 15 NaN 3 3 31 NaN 4 56 NaN NaN 我一直在尝试编写一个可以应用于df行的函数。我在想如果nan\u counts=row.isnull().count()我可以使用shift(-nan\u counts

我有一个问题:

   A   B  C
1 10   11 23
2 NaN  2  15
3 NaN  3  31
4 NaN NaN 56 
我想将行向左移动,以便在索引上对齐,如下所示:

  A   B   C
1 10  11  23
2 2   15  NaN
3 3   31  NaN
4 56  NaN NaN
我一直在尝试编写一个可以应用于df行的函数。我在想如果
nan\u counts=row.isnull().count()
我可以使用
shift(-nan\u counts,axis=1)
,但我绝对没有运气。

使用
axis=1
进行行处理:

对于列名称(通用解决方案):

与轴=1一起使用,用于行处理:

对于列名称(通用解决方案):


对于每一行,使用列表理解仅保留非nan值,并将其转换为一个系列。组合系列时,Pandas将自动用nan填充缺失的值

df.apply(lambda x: pd.Series([e for e in x if pd.notnull(e)]), axis=1)
Out[27]: 
      0     1     2
1  10.0  11.0  23.0
2   2.0  15.0   NaN
3   3.0  31.0   NaN
4  56.0   NaN   NaN

对于每一行,使用列表理解仅保留非nan值,并将其转换为一个系列。组合系列时,Pandas将自动用nan填充缺失的值

df.apply(lambda x: pd.Series([e for e in x if pd.notnull(e)]), axis=1)
Out[27]: 
      0     1     2
1  10.0  11.0  23.0
2   2.0  15.0   NaN
3   3.0  31.0   NaN
4  56.0   NaN   NaN

很好的解决方案。注意:“reindex_轴”已被弃用。改用“重新索引”。@cjstevens-谢谢,编辑过。很好的解决方案。注意:“reindex_轴”已被弃用。请改用“重新索引”。@cjstevens-谢谢,已编辑。
df.apply(lambda x: pd.Series([e for e in x if pd.notnull(e)]), axis=1)
Out[27]: 
      0     1     2
1  10.0  11.0  23.0
2   2.0  15.0   NaN
3   3.0  31.0   NaN
4  56.0   NaN   NaN