Geopandas - Попытка изменить значения в ячейке работает, только если столбец NoneType

Я пытаюсь открыть Geopackage, чтобы добавить туда столбец (количество членов) и заполнить эти ячейки в соответствии с количеством членов в определенной области.

Если я создаю столбец как "None", все работает нормально, за исключением того, что QGIS не распознает эти значения как целочисленные, но как String (приводит к проблемам при попытке классификации при символизации всего).

Если я изменю его так, что столбец будет создан как целое число, значения не будут заполнены, и каждая ячейка будет иметь значение "0" (стандартное целочисленное значение).

gdf = gpd.read_file("file.gpkg")
gdf["member_count"] = None

agg = {'Berlin' : 25}
for index, row in gdf.iterrows():

    if row["name"] in agg:
        row["member_count"] = agg[row["name"]]


gdf.crs = {'init' : 'epsg:25832'}
gdf.to_file("data/test.gpkg", driver="GPKG")

С этим фрагментом кода ячейки будут заполнены значением, которое находится в словаре 'agg' (только если значение из другого столбца 'name' найдено в dict). Если я изменю None в строке 2 на int() или 0, все ячейки будут иметь значение 0 и не будут заполнены соответствующим значением из dict.

Итак, с приведенным выше фрагментом кода я получаю что-то вроде этого, с проблемой, что QGIS не распознает member_count как целочисленный столбец.

         suid  ... member_count
0    07334013  ...      None
1    07337005  ...      None
2    07334008  ...      None
3    06431018  ...      None
4    06431021  ...         3
5    08226080  ...      None
6    07332025  ...         2
7    07337501  ...      None
8    08226056  ...      None
9    08225116  ...      None
10   08226086  ...      None
11   08226020  ...      None
12   08226059  ...         3
13   08226003  ...         1

После изменения None в строке 2 на int() или 0, я получаю это:

         suid  ... member_count
0    07334013  ...         0
1    07337005  ...         0
2    07334008  ...         0
3    06431018  ...         0
4    06431021  ...         0
5    08226080  ...         0
6    07332025  ...         0
7    07337501  ...         0
8    08226056  ...         0
9    08225116  ...         0
10   08226086  ...         0
11   08226020  ...         0
12   08226059  ...         0
13   08226003  ...         0

0 ответов

Другие вопросы по тегам