Проверьте, присутствуют ли значения в координатных интервалах - PullRequest
0 голосов
/ 05 июля 2018

У меня есть кадр данных pandas, содержащий пять столбцов: x Границы, Y Границы и свойство float, назовем его pmin. Примерно так:

A = pd.DataFrame(
    {
        'xmin':[0,0,0,0,0,1,1,2,2],
        'xmax':[1,1,1,1,1,2,2,3,3],
        'ymin':[0,1,2,3,4,2,3,1,3],
        'ymax':[1,2,3,4,5,3,4,2,4],
        'pmin':[12,23,54,48,31,42,20,13,8]
    }
)

B-кадр данных (или массив numpy) будет содержать (x, y, p) триплеты. Мне нужно проверить, совпадают ли эти значения со значениями в A, сначала не заботясь о pmin, а затем с условием (p

Поскольку реальное A имеет десятки тысяч строк, а B может иметь сотни тысяч строк, итерация по строкам невозможна. Кроме того, значения x и y не упорядочены (это координаты комплексной линии).

Есть идеи по эффективному способу достижения этого?

1 Ответ

0 голосов
/ 05 июля 2018

Я думаю, вы хотите это:

B = (.3, 1.8, 28)
m = ((A['xmin']<=B[0])&(A['xmax']>=B[0]))&((A['ymin']<=B[1])&(A['ymax']>=B[1]))
np.any(m), B[2]<A[m]['pmin'].iloc[0] if np.any(m) else False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...