首页 > 解决方案 > 如何在熊猫中将数据对齐到数据框的顶部

问题描述

我需要自动化在数据框中移动数据的过程,以证明所有有价值的信息(即不是 NaN)到最顶层的空单元格。这里的问题是,在用户输入之前,我不知道我的输入是什么样子的。因此,我可能将 NaN 嵌入到数据上方、下方或数据集之间的任何位置。

我有的:

 a  b   c   d   e   f   g   h   i   j   k   l   m   o
 0  0   0   0   0   0   0   NaN NaN NaN NaN NaN NaN NaN
 1  1   1   1   1   1   1   NaN NaN NaN NaN NaN NaN NaN
 0  0   0   1   0   0   1   NaN NaN NaN NaN NaN NaN NaN
 0  0   1   0   1   0   0   NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN 1   1   0   1   0   0   1

期望的输出:

a   b   c   d   e   f   g   h   i   j   k   l   m   o
0   0   0   0   0   0   0   1   1   0   1   0   0   1
1   1   1   1   1   1   1   NaN NaN NaN NaN NaN NaN NaN
0   0   0   1   0   0   1   NaN NaN NaN NaN NaN NaN NaN
0   0   1   0   1   0   0   NaN NaN NaN NaN NaN NaN NaN

我想要做的是有效地(即不是逐行)将第 4 行列h中的值移动到o到顶部。我能够使用以下代码行对其进行硬编码:

> df= df.set_index(['a', 'b', 'c', 'd', 'e', 'f','g']).shift(-4).iloc[0:5].reset_index()

> df= df.reindex(np.arange(4))

正如我上面所说的,硬编码的问题是,在用户输入数据之前,你不知道数据集是什么样子的。同样,此应用程序将是具有超过 100k 行数据的数据。

关于如何使转移过程自动化的任何建议?最好使用熊猫。

标签: pythonpandas

解决方案


推荐阅读