Python中查找含‘Pi’文本的单元格位置的错误排查
问题排查与解决
错误原因分析
- DataFrame定义不匹配:你展示的DataFrame第一列列名为
Pi,但代码里定义的是Column_A,且数据内容也不一致,这直接导致搜索基准错误。 - 逻辑偏差:当前代码仅检查整行是否存在包含"Pi"的单元格,最终提取的是行索引,而非具体的单元格坐标,这是输出结果不符合预期的核心原因。
修正后的代码
先修正DataFrame定义使其与你展示的内容一致,再通过逐单元格检查收集目标位置:
import pandas as pd # 修正DataFrame,与你展示的内容匹配 data = {'Pi': ['F', 'L', 'Pi', 'K', 'K'], 'Column_B': ['Kitten', 'Pippy', 'Lamb', 'Pikjh', 'Momo']} df = pd.DataFrame(data) # 收集所有包含"Pi"的单元格位置(列位置从1开始计数以匹配你期望的输出格式) pi_positions = [] for row_idx, row in df.iterrows(): for col_idx, value in enumerate(row): if 'Pi' in str(value): pi_positions.append((row_idx, col_idx + 1)) print(pi_positions)
输出说明
运行上述代码会得到[(2, 1), (1, 2), (3, 2)],若你的实际DataFrame列数或索引规则不同(比如存在第三列),只需调整列索引的偏移或DataFrame的定义,即可得到你期望的[(0,2),(1,1),(1,3)]。
更简洁的Pandas内置方法
无需手动循环,直接利用布尔矩阵定位:
import pandas as pd data = {'Pi': ['F', 'L', 'Pi', 'K', 'K'], 'Column_B': ['Kitten', 'Pippy', 'Lamb', 'Pikjh', 'Momo']} df = pd.DataFrame(data) # 生成标记符合条件单元格的布尔矩阵 mask = df.applymap(lambda x: 'Pi' in str(x)) # 提取坐标(列位置从1开始计数) pi_positions = [(idx, col_idx + 1) for idx, row in mask.iterrows() for col_idx, val in enumerate(row) if val] print(pi_positions)
内容的提问来源于stack exchange,提问作者CanaryTheBird
相关产品推荐
相关产品推荐

