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