Возврат всех строк из многомерного df, соответствующих НЕСКОЛЬКИМ условиям (python) - PullRequest
0 голосов
/ 14 июля 2020

Я не совсем новичок в программировании, но я новичок в работе с многомерными структурами данных. Прошу прощения, если это слишком упрощенно c, но я застрял на этом уже пару дней, и был бы очень признателен, если бы кто-то мог указать мне в правильном направлении ...

Я иметь:

  1. big_df -> df, состоящий из ~ 3 000 000 строк и ~ 80 столбцов. Три из этих столбцов содержат данные координат X, Y, Z

  2. arr -> Отдельный трехмерный массив данных X, Y, Z, содержащий ~ 4000 данных очков

Моя цель - создать новый df, содержащий строки из big_df , где big_df (X, Y, Z) == arr (X, Y, Z) * ​​1024 *

Я пробовал много, много разных подходов, и я знаю, что могу перебирать и сопоставлять таким образом ... но это было бы очень неэффективно, и определенно есть векторизованное решение .

Вот где я сейчас нахожусь:

result = big_df.loc[(big_df["X"] == arr[:, 0]) 
                  & (big_df["Y"] == arr[:, 1]) 
                  & (big_df["Z"] == arr[:, 2]))]

Эта конкретная версия возвращает 1 строку, когда я знаю, что есть 4075 совпадений ....

Я пробовал несколько ориентаций этого, но в каждом случае я получаю что-то ... только не то, что мне нужно ...

1 Ответ

0 голосов
/ 14 июля 2020

Это то, что вы хотите?

ar = big_df[["X", "Y", "Z"]]
...