GOOGLE ADS

вторник, 26 апреля 2022 г.

Фильтрация фрейма данных с помощью кортежей

У меня есть кадр данных, который выглядит следующим образом, в котором долгота является первым элементом кортежа, а широта - вторым элементом: [1]: https://i.stack.imgur.com/41zpN.jpg
Как я могу отфильтровать кадр данных, чтобы выбрать только строки, в которых долгота будет в диапазоне (19,07,19,82) и широта в диапазоне (-17,09,-20,37). Спасибо!


Решение проблемы

Поскольку вы не указали, какой столбец вы хотите отфильтровать, вот мое решение для получения (longitude, latitude)пар в этих диапазонах только для столбца 1:

import pandas as pd
df = pd.DataFrame({'0': [(133.79, -72.91812133789062), (133.50, -72.95),
(133.22, -72.98)], '1': [(133.56, -72.97),
(133.28, -73.006), (19.59, -18.04)]})
lat_lower, lat_upper = 19.07, 19.82
long_lower, long_upper = -20.37, -17.09
col = df['1']
filtered = df.loc[(lat_lower < col.str[0]) & (col.str[0] < lat_upper) & (long_lower < col.str[1]) & (col.str[1] < long_upper)]
print(filtered)

вывод:

0  1
(133.22, -72.98) (19.59, -18.04)

Здесь, как вы можете видеть, столбец 1имеет только значения в запрошенном вами диапазоне, а столбец 0- нет.
Если вам нужны строки со всеми столбцами в этих диапазонах, вам следует повторить то же самое для всех других столбцов.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...