首页 > 解决方案 > 您如何迭代所有单元格而不仅仅是第一个单元格?

问题描述

我正在尝试更新列中的所有适用值。该代码似乎只是将第一个单元格更改为“1”。Python 如何遍历列中的所有单元格?

import pandas as pd
from openpyxl import load_workbook

wb = load_workbook('Workbook')
ws = wb['A']

for cell in ws['E']:
    if cell.value > 1:
        cell.value = 1

    else:
        cell.value = ""

    wb.save('Workbook2')
    wb.close()

标签: python

解决方案


您实际上不需要导入 openpyxl 来打开工作簿。Pandas 有一个 read_excel() 函数,它使用 openpyxl 引擎完成这项工作。

从那里,您可以使用函数 iterrow() 或 iteritems() 轻松地使用索引遍历行和列。这会更传统,但速度很慢。一个更好更快的方法是使用如下所示的 apply 函数。

之后,您只需将数据框保存回您从中获取的工作簿/工作表中

df = pd.read_excel('Workbook.xlsx', engine="openpyxl")
print(df["E"])
df["E"] = df.apply(lambda x: 1 if x["E"]>1 else x["E"], axis=1)
print(df["E"])

您可以在 pd 文档中阅读有关 iter 函数的更多信息:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html

您还可以在此处阅读有关应用功能的更多信息:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html


推荐阅读