В программировании на основе массивов друзья неявны: вы можете JOIN
любые два столбца после факта - вам не нужно заранее объявлять их друзьями.
В простейшем случае, если ваши массивы a
и b
имеют одинаковую длину и одинаковый порядок, вы можете просто использовать их вместе, например a + b
. Не имеет значения, пришли ли a
и b
из одного файла или нет. Даже если у меня есть, если они неровные (например, jets.phi
), а другие - нет (например, met.phi
), все равно все в порядке, потому что массив без неровностей будет транслироваться в соответствии с зубчатым.
Обратите внимание, что awkward.Table
и awkward.JaggedArray.zip
могут объединять массивы в один Table
или зубчатый Table
для учета.
Если два массива не находятся в одном и том же порядке, возможно, потому что каждый писатель был распараллелен по отдельности, тогда вам понадобится некоторый столбец, который будет действовать как ключ, связывающий строки одного массива с различными строками другого. Это класс c в стиле базы данных JOIN
, и хотя Up root и Awkward не предоставляют для него подпрограмм, Pandas делает. (Смотрите «слияние, объединение и объединение» в Pandas документировании - это очень много!) Вы можете сохранить неровность массива в Pandas, подготовив столбец с помощью функции awkward.topandas
.
Следующая проблема рассказывает о многих из этих вещей, хотя пользователи в проблеме ниже должны были объединить наборов файлов , а не просто одно дерево. (В принципе, процесс должен просматривать все файлы, которые содержат какие ключи: проблема распределенной базы данных.) Даже если это не ваш случай, вы можете найти больше подсказок, чтобы узнать, с чего начать.
https://github.com/scikit-hep/uproot/issues/314