Функция Python для выбора всех муниципалитетов

#python #pandas

Вопрос:

Поэтому я хочу импортировать некоторые данные из голландского банка данных CBS. Мне нужно выбрать все муниципалитеты. У всех них есть код, который начинается с GM, а затем 4 числа.

Должен ли я вводить их все? Или есть более быстрый способ собрать их всех за один раз?

 # Downloaden van selectie van data data = pd.DataFrame(  cbsodata.get_data('70072ned',   filters="RegioS eq 'GM0003', 'GM0004', 'GM0005'",  select=['RegioS', 'Vrouwen_3', 'Mannen_2'])) print(data.head())  

Ответ №1:

Я не уверен, как cbsodata.get_data это работает, но мне кажется, что вы могли бы генерировать filters .

 filters = "RegioS eq "   ", ".join(["'GM"   str(i).zfill(4)   "'" for i in range(3, 8)])  

Это даст вам:

 "RegioS eq 'GM0003', 'GM0004', 'GM0005', 'GM0006', 'GM0007'"  

Который вы можете использовать в качестве filter переменной.


Пример:

 filters = "RegioS eq "   ", ".join(["'GM"   str(i).zfill(4)   "'" for i in range(3, 8)])  data = pd.DataFrame(  cbsodata.get_data(  "70072ned",  filters=filters,  select=["RegioS", "Vrouwen_3", "Mannen_2"],  ) ) print(data.head())  

Ответ №2:

Похоже, вы можете использовать запросы ODATA. Если вы попробуете следующее, вы поймете, как изменить GM019 на просто GM, и он вернет вам то, что вам нужно.

 pd.DataFrame(  cbsodata.get_data('70072ned',  filters="startswith(RegioS, 'GM019')"))  

Вы получите все, что угодно, начиная с GM019

Те же данные, отфильтрованные по столбцам

 pd.DataFrame(  cbsodata.get_data('70072ned',   filters="startswith(RegioS, 'GM019')",  select=['RegioS', 'Vrouwen_3', 'Mannen_2']))  

Примечание: при возврате всего (без фильтров или выбора) набор данных был небольшим, но для получения данных потребовалось некоторое время (пара минут).