You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DataFrame或数组循环传递多位置参数给Python函数

问题描述

我有一个包含A、B列的.csv文件,数据如下:

AB
232.65-57.48
22.69-5.46
23.67-7.71

已定义一个需要两个位置参数的简单函数:

def add_numbers(n1, n2):
    answer = n1 + n2
    print(answer)

已使用pandas读取文件为DataFrame:

# 读取文件
import pandas as pd
df = pd.read_csv(r'myfile.csv')

# 检查A列数据
print(df['A'])
# 输出:
# 0    232.65
# 1     22.69
# 2     23.67
# Name: A, dtype: float64

也将数据转换为numpy数组:

import numpy as np
arr = np.loadtxt(r'myfile.csv', delimiter=',')
arr
# 输出:
# array([[232.65, -57.48],
#        [22.69,  -5.46],
#        [23.67,  -7.71]])

尝试过循环、iter、enumerate、apply等方法但始终报错,请问如何将每行的两个值作为参数循环传入该函数?

解决方案

以下是几种可行的实现方式:

方法1:使用Pandas的apply方法

直接对DataFrame的行调用apply,指定axis=1按行处理,将每行的A、B值传入函数:

import pandas as pd

def add_numbers(n1, n2):
    answer = n1 + n2
    print(answer)

df = pd.read_csv(r'myfile.csv')
df.apply(lambda x: add_numbers(x['A'], x['B']), axis=1)

方法2:使用Pandas的iterrows()循环行

通过iterrows()遍历DataFrame的每一行,取出对应列的值传入函数:

import pandas as pd

def add_numbers(n1, n2):
    answer = n1 + n2
    print(answer)

df = pd.read_csv(r'myfile.csv')
for index, row in df.iterrows():
    add_numbers(row['A'], row['B'])

方法3:使用Numpy数组遍历

如果用Numpy数组存储数据,直接遍历数组的每一行,解包元素后传入函数:

import numpy as np

def add_numbers(n1, n2):
    answer = n1 + n2
    print(answer)

arr = np.loadtxt(r'myfile.csv', delimiter=',')
for row in arr:
    add_numbers(*row)

方法4:基础Python直接读取CSV

无需第三方库,直接读取CSV文件逐行处理:

def add_numbers(n1, n2):
    answer = n1 + n2
    print(answer)

with open(r'myfile.csv', 'r') as f:
    # 跳过表头行
    next(f)
    for line in f:
        a, b = map(float, line.strip().split(','))
        add_numbers(a, b)

内容的提问来源于stack exchange,提问作者Joonatan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:30:44