gpt4 book ai didi

python - Openpyxl 创建具有工作表名称和特定单元格值的数据框?

转载 作者:行者123 更新时间:2023-12-04 22:18:35 24 4
gpt4 key购买 nike

我需要做什么:

  • 在 Python/Pandas 中打开 Excel 电子表格
  • 使用 [name, balance]
  • 创建 df

    例子:


    姓名
    平衡


    琼斯事工
    45,408.83

    史密斯事工
    38,596.20

    美国能源部
    28,596.20


    到目前为止我所做的...
    import pandas as pd
    import openpyxl as op
    from openpyxl import load_workbook
    from pathlib import Path
    然后...
    # Excel File
    src_file = src_file = Path.cwd() / 'lm_balance.xlsx'

    df = load_workbook(filename = src_file)
    我通过...查看了所有工作表名称
    df.sheetnames
    并创建了一个带有“名称”列的数据框
    balance_df = pd.DataFrame(df.sheetnames) 
    我的电子表格看起来像这样......
    sample spreadsheet
    我现在需要遍历每张纸并添加“期末资金余额”和相应的“值(value)”
  • “期末资金余额”位于不同的行,但始终位于最后一行。 “值”始终在“G”列中

  • 我该怎么做呢?
    我已经阅读了以下示例:
  • 自动化无聊的东西
  • Openpyxl 文档
  • PBPython.com 示例
  • 堆栈溢出问题

  • 我感谢您的帮助!
    github 上的工作示例: Github: JohnMillstead: Balance_Study

    最佳答案

    要获取单元格值,首先设置 data_only=Trueload_workbook ,否则您最终可能会得到单元格公式。要获取工作表的最后一行,您可以使用 ws. max_row .将前面的命令与已经创建的数据框和 apply 结合起来对于每个工作表名称,一个函数从该工作表中获取最后一个值 G列(wb[x][f'G{wb[x].max_row}'])。

    import pandas as pd
    from openpyxl import load_workbook

    src_file = 'test_balance.xlsx'
    wb = load_workbook(filename = src_file, data_only=True)

    df = pd.DataFrame(data=wb.sheetnames, columns=["name"])
    df["balance"] = df.name.apply(lambda x: wb[x][f'G{wb[x].max_row}'].value)

    print(df)
    来自 df 的输出
                       name   balance
    0 Jones Ministry 15100.08
    1 Smith Ministry 45408.83
    2 Stark Ministry 1561.75
    3 Doe Ministry 7625.75
    4 Bright Ministry 3078.30
    5 Lincoln Ministry 6644.59
    6 Martinez Ministry 11500.54
    7 Patton Ministry 9782.65
    8 Rich Ministry 8429.88
    9 Seitz Ministry 2974.58
    10 Bhiri Ministry 622.83
    11 Pignatelli Ministry 34992.05
    12 Cortez Ministry -283.48
    13 Little Ministry 13755.80
    14 Johnson Ministry -2035.31

    关于python - Openpyxl 创建具有工作表名称和特定单元格值的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66572715/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com