我有一个Pandas数据帧,每行至少有4个非NaN值, 但位于不同的柱子上:
Index Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8
1991-12-31 100.000 100.000 100.000 89.123 NaN NaN NaN NaN
1992-01-31 98.300 101.530 100.000 NaN 92.342 NaN NaN NaN
1992-02-29 NaN 100.230 98.713 97.602 NaN NaN NaN NaN
1992-03-31 NaN NaN 102.060 93.473 98.123 NaN NaN NaN
1992-04-30 NaN 102.205 107.755 94.529 94.529 NaN NaN NaN
(我只显示前8列)我想把它变成一个每行有4列的数据框。 行应该只包含该日期的前四个非NaN值(从左到右读取)。在
每排的顺序很重要。在
方法1:这是一个使用^{} -
样本运行-
^{pr2}$方法2:使用特制的面具功能-
运行时测试保持秩序的工作解决方案-
如果顺序不重要,可以沿着第一个轴调用
np.sort
。在这比我的第二个解决方案快得多,所以如果可能的话,一定要考虑这个。在
如果顺序很重要,请调用
^{pr2}$sorted
+apply
,并获取结果的前4列。在计时
以下是我的答案的时间安排-
您可以使用:
或者为了获得更好的性能,请使用
^{pr2}$numpy
-处理需求,每行至少有4个非值:计时:
相关问题 更多 >
编程相关推荐