为什么"numpy.int32"不能在这里打印? (使用 geopandas + python 3.9.5)

Why is "numpy.int32" not able to be printed here? (Using geopandas + python 3.9.5)

相关代码如下:

import geopandas as gpd

#A shape file (.shp) is imported here, contents do not matter, since the "size()" function gets the size of the contents
shapefile = 'Data/Code_Specific/ne_50m_admin_1_states_provinces/ne_50m_admin_1_states_provinces.shp'

gdf = gpd.read_file(shapefile)[['admin', 'adm0_a3', 'postal', 'geometry']]

#size
#Return an int representing the number of elements in this object.
print(gdf.size())

最后一行代码出现错误, TypeError: 'numpy.int32' object is not callable

这样做的主要目的是我试图将 gdf.size() 整合到一个 for 循环中:

for index in range(gdf.size()):
    print("test", index)
    #if Austrailia, remove
    if gdf.get('adm0_a3')[index] == "AUS":
        gdf = gdf.drop(gdf.index[index])

我完全不知道该做什么,这是我第一次 post 访问此站点。希望我不会因为这多么愚蠢或简单而获得荣誉徽章,我很难过。

我想你要找的功能是,

gdf.shape[0]

len(gdf.index)

我认为第一个选项更具可读性,但第二个选项更快。

gpd.read_file 将 return 成为 GeoDataFrameDataFrame 对象,它们都具有 size 属性 returns一个整数。该属性只需使用 gdf.size 访问,并在其旁边添加方括号,就会出现错误。

size 是使用错误的属性,对于 table 它 return 是行数乘以列数。乍一看,以下内容应该有效

for index in gdf.index:
    ...

但是您在迭代时修改了可迭代对象的长度。如果您在尝试访问索引之前删除索引,这可能会使所有内容不同步并导致 KeyError。由于您只想过滤一些行,只需使用

gdf = gdf[gdf['adm0_a3'] != 'AUS']