如何按名称选择单列或列范围?以选取'Country Name'和2006-2015列为例
解决pandas DataFrame选取指定列的问题
你的代码GPD.loc[:,'Country Name',['2006':'2015']]语法有误,loc的列索引参数不支持这种混合单个列名与嵌套切片的写法,以下是两种可行的解决方案:
方法一:显式组合列名列表
先构造包含'Country Name'和2006-2015年所有列名的列表,再传入loc:
# 生成2006到2015的年份字符串列表 year_cols = [str(year) for year in range(2006, 2016)] # 组合目标列 target_cols = ['Country Name'] + year_cols # 选取列 selected_df = GPD.loc[:, target_cols]
方法二:利用loc的连续切片(需列顺序符合要求)
如果你的DataFrame中'Country Name'列之后紧接着是按年份递增排列的2006到2015列,可以直接使用连续切片:
selected_df = GPD.loc[:, 'Country Name':'2015']
注意:这种方法仅在列顺序为Country Name → 2006 → 2007 → ... → 2015时有效,若年份列分散或顺序不对,建议用方法一。
额外验证方式
如果不确定年份列是否存在,可以先检查列名:
# 查看所有列名 print(GPD.columns.tolist()) # 验证年份列是否存在 year_cols = [str(year) for year in range(2006, 2016)] missing_cols = [col for col in year_cols if col not in GPD.columns] if missing_cols: print(f"以下年份列不存在:{missing_cols}")
内容的提问来源于stack exchange,提问作者nicolas galaz
相关产品推荐
相关产品推荐

