Excel的A列有许多具有不同值的行。示例:
613
613
613
625
625
631
631...etc
我想遍历A列,当单元格的值引用一个新值时,获取单元格的行。在
预期结果示例: 当单元格的值更改为625时,它将返回第4行。当631,6,等等。在
这是我目前为止的代码:
^{pr2}$当我试图捕捉细胞开始有不同的值时,我有点不知所措。如果有人能给我指导,我会非常感激的。谢谢。在
编辑:能够找到一个临时解决方案:
wb = load_workbook("Workbook.xlsx")
ws = wb.active
sheet = wb["Sheet"]
for fila in ws.iter_rows('A2:A7'):
for celda in fila:
if celda.value != celda.offset(-1, 0).value:
print(celda.row)
也许最简单的方法是使用
zip
,但这需要将所有行加载到内存中并创建2个列表,如果实际有200万行,这可能会很棘手:更保守的方法是“缓存”最后一个值:
^{pr2}$输出
如果您希望在当前代码中尽可能少地更改,我建议将最后一个值存储在某种临时变量中,每次移动到下一行时都会覆盖该临时变量。将当前行的国家代码与前一行的国家代码进行比较,如果它们不同,则打印该行的索引。如果行的索引不容易访问,则可以实现自己的计数器变量来跟踪您所在的索引。可能有更优雅的解决方案,但这些都会奏效。在
下面是我上面描述的一个实现示例:
您可能希望在第一次分配临时变量时使用不同的方法。这将打印第一个值。在
最高投票权的解决方案here为打印索引问题提供了一个更优雅的解决方案。另外,this文档告诉我们有一种更干净的方法来打开和读取文件(请参阅“只读”部分)。在
为了跟踪值何时更改,可以使用变量来记录最后一个值:
您将其用作:
^{pr2}$我忘记了如何从openpyxl工作表行获取第一列的值,请根据需要更新
cell_a_value
函数。在相关问题 更多 >
编程相关推荐