Перебирайте ключи групп и записывайте данные в файлы - PullRequest
0 голосов
/ 03 февраля 2020

Я абсолютный новичок в Python. Я хотел бы перебирать ключи после команды groupby, например:

Groups = Country.groupby(['province_territory']).groups
for c in Groups: 
Region = Country[Country['province_territory'] == c]
print(c)

вместо следующего подхода, который я использовал:

A = gp.GeoDataFrame(Country[Country['province_territory'] == 'A'])
B = gp.GeoDataFrame(Country[Country['province_territory'] == 'B'])
C = gp.GeoDataFrame(Country[Country['province_territory'] == 'C'])
D = gp.GeoDataFrame(Country[Country['province_territory'] == 'D'])

A.to_file('DATA/A')
B.to_file('DATA/B')
C.to_file('DATA/C')
D.to_file('DATA/D')

Страна - файл данных geo json .

1 Ответ

0 голосов
/ 03 февраля 2020

Вы довольно близки, вам просто нужно перебирать группы, запрашивая основной DataFrame, чтобы получить подмножество DataFrame для каждой территории провинции. В предложении DataFrame.query символ @ используется для включения переменной. Поскольку вы новичок, также стоит упомянуть, что делает f'DATA/{territory}', это хороший чистый способ форматирования строк в python3 .6 и далее. Он вставит значение переменной территории в этой позиции в строке.

for territory in Country.groupby(['province_territory']).groups:
    df = Country.query('province_territory == @territory')
    df.to_file(f'DATA/{territory}')

Кстати, если вам просто нужен уникальный набор значений территории провинции и ничего, что предоставляет метод groupby, маленькая чище версия может быть:

for territory in Country['province_territory'].unique():
    df = Country.query('province_territory == @territory')
    df.to_file(f'DATA/{territory}')
...