0

我正在尝试打开一个 Geopackage 以在其中添加一列(成员数)并根据特定区域中的成员数填充这些单元格。

如果我将列创建为“无”,则一切正常,除了 QGIS 不将这些值识别为整数而是字符串(在符号化所有内容时尝试分类时会导致问题)。

如果我将其更改为将列创建为整数,则不会填充这些值,并且每个单元格的值都为“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”的值时)。如果我将第 2 行中的“无”更改为“int()”或“0”,则所有单元格的值都为 0,并且不会用字典中的相应值填充。

因此,通过上面的代码,我得到了这样的结果,问题是 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

将第 2 行中的 None 更改为 '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
4

0 回答 0