如何基于单元格值而非列标签获取DataFrame的列索引
获取DataFrame指定行中特定值的列索引
先看你给出的DataFrame:
import pandas as pd df = pd.DataFrame([["a", "b", "c"], ["d", "e", "f"],["g", "h", "i"]])
这里有几种简单的方法可以获取第0行中值为"c"的列索引:
- 方法1:布尔筛选直接定位
先取出第0行的Series,通过布尔条件筛选出值为"c"的列,再提取对应的索引:
col_index = df.columns[df.loc[0] == "c"][0] print(col_index) # 输出:2
逻辑:df.loc[0] == "c"会生成一个布尔Series,标记第0行中每个值是否等于"c";df.columns[]用这个布尔Series过滤出符合条件的列索引,最后取第一个元素(因为这里只有一个匹配项)。
- 方法2:用where+dropna定位
通过where保留目标值,dropna去掉空值,再取索引:
col_index = df.loc[0].where(df.loc[0] == "c").dropna().index[0]
- 方法3:借助numpy快速查找
利用numpy的数组查找功能,直接定位值的位置:
import numpy as np col_index = np.argwhere(df.loc[0].values == "c")[0][0]
逻辑:df.loc[0].values把第0行转成numpy数组,np.argwhere找出等于"c"的元素位置,最后提取对应的列索引。
内容的提问来源于stack exchange,提问作者Superfreeza
相关产品推荐
相关产品推荐

