如果在 geopandas 中使用 if 语句不存在,如何添加几个新列
How to add several new columns if not already present using if statement in geopandas
编码新手和第一次发帖所以如果有什么我没有包括在内,请告诉我。
我正在尝试向 shapefile 添加新列。我有一个所需列的列表,有时 shapefile 只会包含其中的一些列。所以我需要检查哪些存在并添加那些不存在。我尝试使用以下代码实现此目的:
import geopandas as gpd
shape = gpd.read_file("shapefile.shp")
add_fields = [['GUI',
'POLYGON',
'ORIG_HAB',
'ORIG_CLASS',
'EUNIS_L3',
'HAB_TYPE',
'VERSION',
'DET_MTHD',
'DET_NAME',
'TRAN_COM',
'T_RELATE',
'VAL_COMM',
'DataAccess',
'Three_Step',
'MESH_Confi']]
field_name_list = shape.columns.tolist()
for fieldToAdd in add_fields:
if fieldToAdd not in field_name_list:
shape.reindex(shape.columns.tolist() + fieldToAdd, axis=1)
shape.to_file("outputshapefile.shp")
当我 运行 代码时没有错误,但是 shapefile 看起来没有改变。我已经搜索了论坛以查看接下来要尝试什么,这部分是我找到 .reindex 的地方。我认为我实际上并没有添加新列,但不确定如何执行此操作。如果有人能指出我正确的方向,将不胜感激。
我想你正在寻找这样的东西:
import geopandas as gpd
shapefile = gpd.read_file("shapefile.shp")
add_fields = ['GUI',
'POLYGON',
'ORIG_HAB',
'ORIG_CLASS',
'EUNIS_L3',
'HAB_TYPE',
'VERSION',
'DET_MTHD',
'DET_NAME',
'TRAN_COM',
'T_RELATE',
'VAL_COMM',
'DataAccess',
'Three_Step',
'MESH_Confi']
field_name_list = shapefile.columns.tolist()
for fieldToAdd in add_fields:
if fieldToAdd not in field_name_list:
#shapefile.reindex(shapefile.columns.tolist().append(fieldToAdd), axis=1)
shapefile[fieldToAdd]=None
shapefile.to_file("outputshapefile.shp")
请注意,我已将 add_fields 更改为 1D 而不是 2D(删除了外括号)
此外,我将名称更改为 shapefile 而不是 shape,以免与 df 属性.
混淆
编码新手和第一次发帖所以如果有什么我没有包括在内,请告诉我。 我正在尝试向 shapefile 添加新列。我有一个所需列的列表,有时 shapefile 只会包含其中的一些列。所以我需要检查哪些存在并添加那些不存在。我尝试使用以下代码实现此目的:
import geopandas as gpd
shape = gpd.read_file("shapefile.shp")
add_fields = [['GUI',
'POLYGON',
'ORIG_HAB',
'ORIG_CLASS',
'EUNIS_L3',
'HAB_TYPE',
'VERSION',
'DET_MTHD',
'DET_NAME',
'TRAN_COM',
'T_RELATE',
'VAL_COMM',
'DataAccess',
'Three_Step',
'MESH_Confi']]
field_name_list = shape.columns.tolist()
for fieldToAdd in add_fields:
if fieldToAdd not in field_name_list:
shape.reindex(shape.columns.tolist() + fieldToAdd, axis=1)
shape.to_file("outputshapefile.shp")
当我 运行 代码时没有错误,但是 shapefile 看起来没有改变。我已经搜索了论坛以查看接下来要尝试什么,这部分是我找到 .reindex 的地方。我认为我实际上并没有添加新列,但不确定如何执行此操作。如果有人能指出我正确的方向,将不胜感激。
我想你正在寻找这样的东西:
import geopandas as gpd
shapefile = gpd.read_file("shapefile.shp")
add_fields = ['GUI',
'POLYGON',
'ORIG_HAB',
'ORIG_CLASS',
'EUNIS_L3',
'HAB_TYPE',
'VERSION',
'DET_MTHD',
'DET_NAME',
'TRAN_COM',
'T_RELATE',
'VAL_COMM',
'DataAccess',
'Three_Step',
'MESH_Confi']
field_name_list = shapefile.columns.tolist()
for fieldToAdd in add_fields:
if fieldToAdd not in field_name_list:
#shapefile.reindex(shapefile.columns.tolist().append(fieldToAdd), axis=1)
shapefile[fieldToAdd]=None
shapefile.to_file("outputshapefile.shp")
请注意,我已将 add_fields 更改为 1D 而不是 2D(删除了外括号) 此外,我将名称更改为 shapefile 而不是 shape,以免与 df 属性.
混淆