如何用Pandas根据列名和列值查找对应行号?
解决方案
1. 排查列名格式问题
你的Excel表头里的“50”可能带有前导/尾随空格,导致读取后列名不是纯'50'。先打印所有列名确认:
print(df.columns.tolist())
如果列名确实含空格,要么用实际列名索引,要么提前清理列名:
# 去除所有列名的前后空格 df.columns = df.columns.str.strip() # 再执行查找逻辑 target_rows = df[df['50'] == 286].index # 转换为Excel的行号(pandas索引默认从0开始,需加1) excel_row = target_rows[0] + 1 if len(target_rows) > 0 else None
2. 修正数据类型不匹配问题
你代码里用字符串'286'和列值比较,但Excel中的数值通常是数字类型(int/float),类型不匹配会导致无结果,同时可能掩盖列名错误。先确认列的数据类型:
print(df['50'].dtype)
用对应类型的值进行比较:
# 数字类型直接用286而非'286' target_rows = df[df['50'] == 286].index
3. 确保读取Excel时正确识别表头
如果读取时未指定表头行,可能把第一行数据当成列名,导致索引错误。读取时明确设置表头:
import pandas as pd # header=0表示用第一行作为表头 df = pd.read_excel('你的文件路径.xlsx', header=0) # 先清理列名再操作 df.columns = df.columns.str.strip()
内容的提问来源于stack exchange,提问作者Kaiete
相关产品推荐
相关产品推荐

