給定以下大熊貓數據幀(它的副本可以通過發現here)。如何在一個單獨的列中填入na,遞增/遞減nr行直到下一個信號值和前向/後向信號值? 信號值僅爲:1; -1或np.na通過遞增/遞減最後找到的值向前/向後填充na?
+----+---------+--------+
| | Values | Signal |
+----+---------+--------+
| 0 | 1420.49 | |
| 1 | 1421.12 | |
| 2 | 1418.95 | |
| 3 | 1419.04 | 1 |
| 4 | 1419.04 | |
| 5 | 1417.51 | |
| 6 | 1416.97 | |
| 7 | 1413.21 | -1 |
| 8 | 1411.49 | |
| 9 | 1412.57 | |
| 10 | 1408.55 | 1 |
| 11 | 1409.16 | |
| 12 | 1413.38 | |
| 13 | 1413.38 | 1 |
| 14 | 1402.35 | |
| 15 | 1397.8 | |
| 16 | 1398.36 | |
| 17 | 1397.62 | |
| 18 | 1394.58 | -1 |
| 19 | 1399.05 | |
| 20 | 1399.9 | |
| 21 | 1398.96 | -1 |
| 22 | 1398.96 | |
| 23 | 1393.69 | |
| 24 | 1398.13 | |
| 25 | 1398.66 | |
| 26 | 1398.02 | 1 |
| 27 | 1397.97 | |
| 28 | 1396.05 | |
| 29 | 1398.13 | |
+----+---------+--------+
結果應該是這樣到底(here是它的一個副本):
+----+---------+--------+------------------------+----------------------+-----------------+
| | Values | Signal | forward signal rows nr | backward signal rows | value at signal |
+----+---------+--------+------------------------+----------------------+-----------------+
| 0 | 1420.49 | | | | |
| 1 | 1421.12 | | | | |
| 2 | 1418.95 | | | | |
| 3 | 1419.04 | 1 | 1 | 4 | 1416.97 |
| 4 | 1419.04 | | 2 | 3 | 1416.97 |
| 5 | 1417.51 | | 3 | 2 | 1416.97 |
| 6 | 1416.97 | | 4 | 1 | 1416.97 |
| 7 | 1413.21 | -1 | -1 | -3 | 1412.57 |
| 8 | 1411.49 | | -2 | -2 | 1412.57 |
| 9 | 1412.57 | | -3 | -1 | 1412.57 |
| 10 | 1408.55 | 1 | 1 | 3 | 1413.38 |
| 11 | 1409.16 | | 2 | 2 | 1413.38 |
| 12 | 1413.38 | | 3 | 1 | 1413.38 |
| 13 | 1413.38 | 1 | 1 | 5 | 1397.62 |
| 14 | 1402.35 | | 2 | 4 | 1397.62 |
| 15 | 1397.8 | | 3 | 3 | 1397.62 |
| 16 | 1398.36 | | 4 | 2 | 1397.62 |
| 17 | 1397.62 | | 5 | 1 | 1397.62 |
| 18 | 1394.58 | -1 | -1 | -3 | 1399.9 |
| 19 | 1399.05 | | -2 | -2 | 1399.9 |
| 20 | 1399.9 | | -3 | -1 | 1399.9 |
| 21 | 1398.96 | -1 | -1 | -5 | 1398.66 |
| 22 | 1398.96 | | -2 | -4 | 1398.66 |
| 23 | 1393.69 | | -3 | -3 | 1398.66 |
| 24 | 1398.13 | | -4 | -2 | 1398.66 |
| 25 | 1398.66 | | -5 | -1 | 1398.66 |
| 26 | 1398.02 | 1 | 1 | 4 | 1398.13 |
| 27 | 1397.97 | | 2 | 3 | 1398.13 |
| 28 | 1396.05 | | 3 | 2 | 1398.13 |
| 29 | 1398.13 | | 4 | 1 | 1398.13 |
+----+---------+--------+------------------------+----------------------+-----------------+
我有幾個嵌套循環取得了最後的結果,但問題在於它們在幾百萬行的較大數據幀上效率非常低。
..你剛剛刪除了一列,並改變了後向信號行的定義嗎? – DSM
是的,我很抱歉,意識到這是我要求的錯誤結果。但如果你已經有了解決方案,你可以發佈它 – RaduS