繁体   English   中英

如何迭代excel列

[英]How to iterate over excel columns

(这可能是一个简单的问题,但我对 python 相当陌生)。 我有一个带有多个参数(18 个参数)的函数。 我还有一个 excel 文件,其中包含我想传递给函数的输入数据。 我假设第一步是将 excel 文件转换为数据框。 但是,我的问题是我不知道如何将列值传递给函数。

我的函数如下所示(仅在示例中包含 18 个参数中的 4 个):

def calculation(calculation_date, redemption, spot_price, conversion_ratio):
    ... #calculations here
    return bond_data

我的数据结构如下:

在此处输入图片说明

如何将每列中的值传递给函数? 我构造了我的数据文件,以便第一列(A 列)匹配第一个参数,第二列(B 列)匹配第二个参数等等?

看看这个:使用 openpyxl 在 Python 中使用 Excel 电子表格的指南

你可以这样做:

from openpyxl import load_workbook

workbook = load_workbook(filename="sample.xlsx")
sheet = workbook.active
for row in sheet.iter_rows(min_row=2,
                       min_col=1,
                       max_col=4,
                       values_only=True):
    row_dic = {
               "parent": row[1],
               "title": row[2],
               "category": row[3]}
    excel_list.append(row_dic)

并且您可以使用列表来调用计算函数。

你可以试试这个

读取 excel 文件后,如果您有df作为数据框对象,则

column_names=list(df.columns)

column_names 将包含您在 excel 文件中的列列表。 现在您可以遍历它。 例子

for column_name in column_names:
      #your code

注意:您可以直接将column_names列表对象传递给函数。

例子:

#function defination
def column_names(list_of_columns)

#calling function
calculation(column_names) 

让我知道这是否适合您。

谢谢

这可以通过 xlwings 实现,同时保留在 Excel 中。

xlwings 是一个 COM 包装器,这意味着它支持 Excel 和 Python 之间的双向通信。 使用 xlwings,您可以使用一些 VBA 来调用 Python 函数,或定义“用户定义的函数”并实际将您的 Python 代码用作 Excel 中的函数。

您需要安装 xlwings 并按照 xlwings 说明设置 Excel 工作簿(启用宏、信任和加载项)。 这不是特别困难。

在下面的代码中,我选择使用用户定义的函数,这使得 my_calculation 可作为 Excel 中的函数使用。

这是使用您定义的函数签名进行虚构计算的代码。 “xlwings”位实际上只是应用于函数的装饰器。

import xlwings as xw
import datetime

@xw.func
@xw.arg('calculation_date')
@xw.arg('redemption')
@xw.arg('spot_price')
@xw.arg('conversion_ratio')
def my_calculation(calculation_date, redemption, spot_price, conversion_ratio):
    bond_data = redemption / spot_price * conversion_ratio
    return bond_data

这是我们使用 xlwings 加载项在 Excel 文件中使用 my_function 时看到的图像。 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM