如何在不指定列名的情况下查找DataFrame中特定值的行列索引
在DataFrame中查找特定值的行列索引(不指定列名)
不用指定列名的话,有两种简单方法可以一次性拿到目标值的行、列索引:
方法一:利用numpy的where函数
DataFrame底层基于numpy数组,直接用np.where可以定位所有匹配值的位置:
import numpy as np # 定位所有值为'Date'的位置 rows, cols = np.where(df.values == 'Date') # 输出结果 print(f"匹配到的行索引:{rows}") print(f"匹配到的列索引:{cols}")
如果有多个'Date'值,rows和cols会分别返回所有对应的行、列索引数组;只有单个匹配时,返回的是单元素数组。
方法二:用stack()转换索引后筛选
把DataFrame堆叠成多级索引的Series,直接提取匹配值的索引对:
# 堆叠后筛选出值为'Date'的条目,获取其(行索引, 列索引) match_indices = df.stack()[df.stack() == 'Date'].index # 遍历输出每个匹配的行列索引 for idx in match_indices: print(f"行索引:{idx[0]},列索引:{idx[1]}")
这种方法的优势是直接得到(行, 列)的索引元组,方便逐个处理匹配结果。
内容的提问来源于stack exchange,提问作者Pravin
相关产品推荐
相关产品推荐

