【问题标题】:Looping through an Excel spreadsheet (using openpyxl)循环遍历 Excel 电子表格(使用 openpyxl)
【发布时间】:2017-11-15 17:53:53
【问题描述】:

import openpyxl wb=openpyxl.load_workbook('Book_1.xlsx') ws=wb['Sheet_1']

我正在尝试使用 openpyxl 分析 Excel 电子表格。我的目标是从 D 列中为 A 列中的每组数字获取最大数字。我希望获得帮助以获取循环代码以进行分析。这是我要分析的电子表格示例。文件名是 Book 1,工作表名是 Sheet 1。我正在运行 Python 3.6.1、pandas 0.20.1 和 openpyxl 2.4.7。我正在提供到目前为止的代码。

【问题讨论】:

  • 您必须提供一些您尝试过的代码并就此提出问题。

标签: excel python-3.x pandas openpyxl pandas-groupby


【解决方案1】:

假设您有文件test.xlsx 和工作表ws1。试试:

from openpyxl import load_workbook
wb = load_workbook(filename='test.xlsx')
ws = wb['ws1']

for col in ws.columns:
    col_max = 0
    for cell in col:
        if cell.value > col_max:
            col_max = cell.value
    print('next max:', col_max)

我正在遍历所有行,因为我不确定您的预期。

【讨论】:

  • 我运行了你提供的代码;但是,我没有得到我需要的最大值。我试图在另一列中获得 1,2,3... 的最大值。然后,作为运行代码的结果,我收到了错误消息。我更新了我的问题,因此感觉可以根据它再次提供帮助。我提供的代码的结果也是如此。
  • 下一个最大值:1 下一个最大值:2 下一个最大值:3 下一个最大值:4 下一个最大值:5 回溯(最近一次调用最后):文件“”,行1、在 runfile('C:/Users/hmersiov/untitled1.py', wdir='C:/Users/hmersiov')
  • 文件“C:\Users\hmersiov\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 880 行,在运行文件 execfile(filename , 命名空间)文件“C:\Users\hmersiov\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 102 行,在 execfile exec(compile(f.read( ), 文件名, 'exec'), 命名空间) 文件 "C:/Users/hmersiov/untitled1.py", 第 21 行, in if cell.value > col_max: TypeError: '>' not supported between ' NoneType' 和 'int'
  • 你的单元格好像是空的
【解决方案2】:

IIUC,使用pandas 模块来实现:

import pandas as pd
df = pd.read_excel('yourfile.xlsx')
maxdf = df.groupby('ID').max()

maxdf 会得到你想要的结果。

【讨论】:

  • 如何让程序只显示“id”和一个特定的列?当我运行您提供的代码时,“id”数字在所有列中显示为最大值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多