如何通过列名在Pandas DataFrame中选择连续列?
按列名范围选取DataFrame列的简便方法
当然有啦!针对你想要的通过列名从"b"到"d"选取列的需求,Pandas有几种很方便的实现方式,下面给你一一说明:
最直接的方法:使用
loc进行列名切片
如果你的列在DataFrame里是按顺序排列的(就像例子里的a,b,c,d,e这样),直接用loc的切片语法就能实现,和iloc的逻辑类似,而且是包含起始和结束列的:df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6], "c": [7, 8, 9], "d": [10, 11, 12], "e": [13, 14, 15]}) df.loc[:, "b":"d"]执行后就会得到从
b到d的所有列,完全符合你的需求,这也是最简便的写法。如果列顺序不连续:先获取列索引再用
iloc
要是你的列名在DataFrame里不是连续排列的,或者你需要更灵活的控制,可以先通过columns.get_loc()拿到列的位置索引,再用iloc选取:start_idx = df.columns.get_loc("b") end_idx = df.columns.get_loc("d") df.iloc[:, start_idx:end_idx+1] # iloc是左闭右开,所以要+1包含end列自定义方法:实现你想要的
df.SOME_FUNCTION("b","d")形式
如果你特别喜欢这种函数调用的形式,可以给pd.DataFrame封装一个自定义方法,这样就能直接像你设想的那样使用了:import pandas as pd # 定义自定义方法 def select_cols_between(self, start_col, end_col): start_idx = self.columns.get_loc(start_col) end_idx = self.columns.get_loc(end_col) return self.iloc[:, start_idx:end_idx+1] # 把方法绑定到DataFrame类上 pd.DataFrame.select_cols_between = select_cols_between # 现在就可以直接调用了 df.select_cols_between("b", "d")
总结一下,第一种方法是最推荐的,只要列是按顺序排列的,一行代码就能搞定,完全满足你的需求!
内容的提问来源于stack exchange,提问作者user8042669
相关产品推荐
相关产品推荐

