如何在Pandas DataFrame中为每行两列传递参数应用自定义函数?
Pandas apply传递多列参数的解决方法
你的代码无法正确传递参数的核心原因是没有指定axis=1,apply方法默认对列进行操作,要实现逐行处理必须添加该参数。
修正后的代码
df["ColC"] = df[["ColA", "ColB"]].apply(lambda x: customFunc(x.ColA, x.ColB), axis=1)
更简洁的写法
也可以直接对整个DataFrame调用apply,无需单独筛选列:
df["ColC"] = df.apply(lambda row: customFunc(row["ColA"], row["ColB"]), axis=1)
额外优化:自定义函数的潜在问题
注意你的customFunc存在一个逻辑问题:data = f.read()后,enumerate(data)会逐个遍历文件的单个字符,而非按行遍历。如果你的需求是按行查找匹配,建议修改函数如下:
def customFunc(file_name, pattern): match_index = -1 with open(file_name) as f: # 按行读取文件,start=1让行号从1开始计数(可选) for line_num, line in enumerate(f, start=1): match_index = line.find(pattern) if match_index != -1: break return match_index
内容的提问来源于stack exchange,提问作者Setu Kumar Basak
相关产品推荐
相关产品推荐

