python - 您如何迭代所有单元格而不仅仅是第一个单元格?
问题描述
我正在尝试更新列中的所有适用值。该代码似乎只是将第一个单元格更改为“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()
解决方案
您实际上不需要导入 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
推荐阅读
- go - 在 Go 中为 IO 操作添加助手是不好的做法吗?
- javascript - Javascript Array[Variable] 参考问题
- php - Codeigniter中使用PHPexcel导入excel时如何防止重复数据
- flutter - 在事件处理程序正常完成块错误后,如何解决发出被调用的问题?
- exchange-server - 通过 API 在 Exchange 中创建共享邮箱
- varnish - Varnish Pass - 请求合并
- regex - 正则表达式提取、删除重复项并与 Google 表格中的管道连接
- javascript - 通过 javascript 从 NFS 位置下载 zip 文件
- html - 如何发送用户单击其中一个按钮的发布请求,并告诉服务器哪个按钮
- python - selenium webdriver geckodriver 出错