我正在尝试打开一个 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