You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中查找含‘Pi’文本的单元格位置的错误排查

问题排查与解决

错误原因分析

  1. DataFrame定义不匹配:你展示的DataFrame第一列列名为Pi,但代码里定义的是Column_A,且数据内容也不一致,这直接导致搜索基准错误。
  2. 逻辑偏差:当前代码仅检查整行是否存在包含"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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:25:30