如何按名称切片Pandas DataFrame的连续列并同时筛选行
Pandas 连续列选取问题解答
核心结论
Pandas完全支持按列名直接选取连续列,你注释里的写法只需要去掉外层多余的方括号就可以直接生效。
等效可运行语法
你想要的效果可以直接通过以下代码实现:
print(df.loc[1:5, 'A':'C'])
这个写法和你现有正常运行的df.loc[1:5, ['A', 'B', 'C']]返回结果完全一致,同时完成了行范围切片和连续列选取的需求。
注意事项与扩展用法
loc索引器的切片规则是左闭右闭,和Python原生列表的左闭右开不同,上面的写法会同时包含起始列A和结束列C,刚好匹配连续列选取的需求。- 如果需要动态计算列的位置(比如列名无固定规律、需要运行时确定起止列的场景),也可以通过列索引的位置切片实现:
start_idx = df.columns.get_loc('A') end_idx = df.columns.get_loc('C') # 位置切片是左闭右开,所以结束索引要+1 print(df.loc[1:5, df.columns[start_idx:end_idx+1]])
常规场景下直接使用列名字符串切片即可,写法更简洁高效。
内容的提问来源于stack exchange,提问作者ryanh153
相关产品推荐
相关产品推荐

