Вот мои два мультииндексных фрейма данных:
df1:
Index_0 Index_1 KEYS FLOOR NBVAL ACCBV
116 1687 X425531.25Y6407133.75 505.5 184.3 1690.7
117 1906 X425531.25Y6407141.25 505.0 56.4 2243.4
118 2141 X425531.25Y6407148.75 504.5 29.7 2712.7
df2:
Index0 Index1 KEYS FLOOR NBVAL ACCBV ACCNB ACCPB
116 726 X425531.25Y6407133.75 508.5 -133.0 -133.0 -133.0 0.0
116 854 X425531.25Y6407133.75 508 18.2 -114.8 -133.0 18.2
116 994 X425531.25Y6407133.75 507.5 233.7 118.9 -133.0 251.9
116 1146 X425531.25Y6407133.75 507 -125.0 -6.1 -258.0 251.9
116 1313 X425531.25Y6407133.75 506.5 467.0 460.9 -258.0 718.9
116 1493 X425531.25Y6407133.75 506 374.2 835.1 -258.0 1093.1
116 1687 X425531.25Y6407133.75 505.5 -122.0 713.1 -380.0 1093.1
116 1895 X425531.25Y6407133.75 505 -121.2 591.8 -501.2 1093.1
117 734 X425531.25Y6407141.25 508.5 -132.1 -132.1 -132.1 0.0
117 862 X425531.25Y6407141.25 508 -0.5 -132.6 -132.6 0.0
117 1003 X425531.25Y6407141.25 507.5 312.4 179.8 -132.6 312.4
117 1155 X425531.25Y6407141.25 507 653.0 832.8 -132.6 965.4
117 1323 X425531.25Y6407141.25 506.5 564.1 1396.8 -132.6 1529.5
117 1503 X425531.25Y6407141.25 506 436.2 1833.0 -132.6 1965.6
117 1698 X425531.25Y6407141.25 505.5 353.9 2187.0 -132.6 2319.6
117 1906 X425531.25Y6407141.25 505 56.4 2243.4 -132.6 2376.0
117 2129 X425531.25Y6407141.25 504.5 -238.6 2004.8 -371.2 2376.0
118 742 X425531.25Y6407148.75 508.5 -125.6 -125.6 -125.6 0.0
118 870 X425531.25Y6407148.75 508 -14.0 -139.6 -139.6 0.0
118 1012 X425531.25Y6407148.75 507.5 494.1 354.5 -139.6 494.1
118 1164 X425531.25Y6407148.75 507 682.0 1036.5 -139.6 1176.1
118 1333 X425531.25Y6407148.75 506.5 597.0 1633.5 -139.6 1773.1
118 1513 X425531.25Y6407148.75 506 474.1 2107.6 -139.6 2247.2
118 1709 X425531.25Y6407148.75 505.5 373.6 2481.2 -139.6 2620.8
118 1917 X425531.25Y6407148.75 505 201.7 2683.0 -139.6 2822.6
118 2141 X425531.25Y6407148.75 504.5 29.7 2712.7 -139.6 2852.3
118 2380 X425531.25Y6407148.75 504 -341.3 2371.4 -480.9 2852.3
Я как-то новичок в Python, и мне удалось добраться до этой точки, где я получил два вышеупомянутых фрейма данных, однако я изо всех сил пытаюсь двигаться вперед , Отсюда мои вопросы ниже:
Во-первых, как я могу накапливать 'ACCNB' из 'NBVAL', только если последнее отрицательно (пример выше был рассчитан в MS Excel). Во-вторых, как я могу накапливать «ACCPB» из «NBVAL», только если последний положительный (также рассчитывается с использованием Excel). В-третьих, как я могу извлечь строки из df2, у которых элемент 'FLOOR' больше или равен 'FLOOR' в df1, когда Index0 в df1 совпадает с Index0 в df2? df1 получен из df2, а мультииндекс в df2 был создан с использованием groupby (by = 'KEYS' ...).
Ниже приведен желаемый результат:
df3:
Index0 Index1 KEYS FLOOR NBVAL ACCBV ACCNB ACCPB
116 726 X425531.25Y6407133.75 508.5 -133.0 -133.0 -133.0 0.0
116 854 X425531.25Y6407133.75 508 18.2 -114.8 -133.0 18.2
116 994 X425531.25Y6407133.75 507.5 233.7 118.9 -133.0 251.9
116 1146 X425531.25Y6407133.75 507 -125.0 -6.1 -258.0 251.9
116 1313 X425531.25Y6407133.75 506.5 467.0 460.9 -258.0 718.9
116 1493 X425531.25Y6407133.75 506 374.2 835.1 -258.0 1093.1
117 734 X425531.25Y6407141.25 508.5 -132.1 -132.1 -132.1 0.0
117 862 X425531.25Y6407141.25 508 -0.5 -132.6 -132.6 0.0
117 1003 X425531.25Y6407141.25 507.5 312.4 179.8 -132.6 312.4
117 1155 X425531.25Y6407141.25 507 653.0 832.8 -132.6 965.4
117 1323 X425531.25Y6407141.25 506.5 564.1 1396.8 -132.6 1529.5
117 1503 X425531.25Y6407141.25 506 436.2 1833.0 -132.6 1965.6
117 1698 X425531.25Y6407141.25 505.5 353.9 2187.0 -132.6 2319.6
117 1906 X425531.25Y6407141.25 505 56.4 2243.4 -132.6 2376.0
118 742 X425531.25Y6407148.75 508.5 -125.6 -125.6 -125.6 0.0
118 870 X425531.25Y6407148.75 508 -14.0 -139.6 -139.6 0.0
118 1012 X425531.25Y6407148.75 507.5 494.1 354.5 -139.6 494.1
118 1164 X425531.25Y6407148.75 507 682.0 1036.5 -139.6 1176.1
118 1333 X425531.25Y6407148.75 506.5 597.0 1633.5 -139.6 1773.1
118 1513 X425531.25Y6407148.75 506 474.1 2107.6 -139.6 2247.2
118 1709 X425531.25Y6407148.75 505.5 373.6 2481.2 -139.6 2620.8
118 1917 X425531.25Y6407148.75 505 201.7 2683.0 -139.6 2822.6
118 2141 X425531.25Y6407148.75 504.5 29.7 2712.7 -139.6 2852.3
Извинения за размер примеров ...