为什么"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 成为 GeoDataFrame
或 DataFrame
对象,它们都具有 size
属性 returns一个整数。该属性只需使用 gdf.size
访问,并在其旁边添加方括号,就会出现错误。
size
是使用错误的属性,对于 table 它 return 是行数乘以列数。乍一看,以下内容应该有效
for index in gdf.index:
...
但是您在迭代时修改了可迭代对象的长度。如果您在尝试访问索引之前删除索引,这可能会使所有内容不同步并导致 KeyError
。由于您只想过滤一些行,只需使用
gdf = gdf[gdf['adm0_a3'] != 'AUS']
相关代码如下:
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 成为 GeoDataFrame
或 DataFrame
对象,它们都具有 size
属性 returns一个整数。该属性只需使用 gdf.size
访问,并在其旁边添加方括号,就会出现错误。
size
是使用错误的属性,对于 table 它 return 是行数乘以列数。乍一看,以下内容应该有效
for index in gdf.index:
...
但是您在迭代时修改了可迭代对象的长度。如果您在尝试访问索引之前删除索引,这可能会使所有内容不同步并导致 KeyError
。由于您只想过滤一些行,只需使用
gdf = gdf[gdf['adm0_a3'] != 'AUS']