В моем фактическом фрейме данных более миллиона строк, но образец мультииндексного фрейма данных выглядит так (с 1,0 в IN_VALUE для простоты):
# INDEX ID | MATCH IN_VALUE OUT_VALUE
# 0 7 | 1 1.0 -0.33
# 8 | 6 1.0 0.0
# 10 | 0 1.0 -0.54
# 11 | 6 1.0 0.0
# 1 7 | 1 1.0 -0.15
# 8 | 6 1.0 0.0
# 10 | 0 1.0 -0.54
# 11 | 6 1.0 -0.54
и я получаю еще один Dataframe с помощью некоторых вычислений, например:
# INDEX MATCH IN_VALUE
# 0 6 -0.33
# 1 6 -0.66
Я пытаюсь суммировать столбцы IN_VALUE, когда столбцы INDEX и MATCH совпадают, обновляя первый кадр данных новым IN_VALUE.
Пример вывода для вышеуказанного:
# INDEX ID | MATCH IN_VALUE OUT_VALUE
# 0 7 | 1 1.0 -0.33
# 8 | 6 0.67 0.0
# 10 | 0 1.0 -0.54
# 11 | 6 0.67 0.0
# 1 7 | 1 1.0 -0.15
# 8 | 6 0.34 0.0
# 10 | 0 1.0 -0.54
# 11 | 6 0.34 -0.54
Обратите внимание, что в первом кадре данных есть несколько строк идентификаторов, к которым может применяться изменение. 8 и 11 в данном случае.
Я могу сбросить индекс, а затем установить его равным ['INDEX', 'MATCH']
для обоих фреймов данных, чтобы использовать команду update()
, и это близко к тому, что я хочу. Однако я не хочу просто перезаписывать первый кадр данных вторым, поэтому он не совсем работает.
Кроме того, я нахожу много других возможностей, но ничего из того, что явно работает для применения к нескольким строкам в исходном фрейме данных.
Как я могу добиться этого с помощью панд, сохраняя при этом скорость для больших кадров данных?