如何获取Pandas中同名列(A列)的位置,适配多DataFrame场景
获取DataFrame中重复列名的位置(以A列为例)
你需要在列名重复的DataFrame里,准确获取所有名为'A'的列的位置(包括第二个及以后的),同时适配不同列数、列位置不固定的多个DataFrame。
先还原你的示例DataFrame:
| A | B | A | C |
|---|---|---|---|
| text1 | text3 | text5 | text7 |
| text2 | text4 | text6 | text8 |
为什么你原来的代码行不通
你之前的循环里,a.columns.get_loc('A')在列名重复时,只会返回第一个匹配的索引,所以不管循环多少次碰到'A',赋值的都是同一个位置,没法区分第二个'A'。
解决方案
直接遍历列的索引和名称,收集所有名为'A'的列的位置,这样不管有多少个重复的'A'列,都能一次性拿到所有位置,适配任意结构的DataFrame。
方法1:列表推导式快速收集
# 一次性获取所有名为'A'的列的索引位置 a_col_indices = [idx for idx, col_name in enumerate(a.columns) if col_name == 'A'] # 取第一个A列的位置 indx1 = a_col_indices[0] # 取第二个A列的位置(先判断是否存在,避免索引越界) indx2 = a_col_indices[1] if len(a_col_indices) >= 2 else None
方法2:循环逐个记录(更直观)
a_col_indices = [] for idx, col_name in enumerate(a.columns): if col_name == 'A': a_col_indices.append(idx) # 根据需要获取对应位置 if len(a_col_indices) >= 1: indx1 = a_col_indices[0] if len(a_col_indices) >= 2: indx2 = a_col_indices[1]
这样处理后,不管你的DataFrame有多少列、'A'列在什么位置,都能准确拿到所有目标列的索引,还能避免索引越界的问题。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

