如何从GeoDataFrame列中选取单个值?解决取值报错问题
从GeoPandas GeoDataFrame中选取单个(多)多边形值的正确方法
问题根源在于筛选后的GeoDataFrame索引不连续。当你通过world.loc[world['name'].isin(['France', 'Belgium'])]得到BeFra时,它的索引继承自原world数据集的索引,并非从0开始的连续序列,直接用[0]会因找不到对应索引而报错。而你示例中的普通DataFrame是从零开始的连续索引,所以df['Name'][0]能正常运行。
以下是几种可行的解决方法:
用
.iloc[]按位置选取:.iloc是基于位置的索引器,不管当前索引是什么,直接取第n个位置的元素:# 两种写法都可以 BeFra['geometry'].iloc[0] # 更推荐的链式写法,避免链式赋值警告 BeFra.iloc[0]['geometry']重置索引后使用原方式:调用
reset_index(drop=True)重置索引为连续序列,之后就能用[0]取值:BeFra = world.loc[world['name'].isin(['France', 'Belgium'])].reset_index(drop=True) BeFra['geometry'][0]用
.loc[]结合实际索引值:先查看BeFra.index确认筛选后行的实际索引,再用.loc精准选取:# 先查看索引 print(BeFra.index) # 假设输出是Int64Index([5, 14], dtype='int64'),则取第一个元素用 BeFra['geometry'].loc[5]
内容的提问来源于stack exchange,提问作者koteletje
相关产品推荐
相关产品推荐

