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

Python 3.6传入DataFrame报'Missing 1 Required Keyword-Only Argument'错误排查

解决Python 3.6中传入DataFrame时的"Missing 1 Required Keyword-Only Argument"错误

这个问题我之前也碰到过!核心原因大概率是你的函数定义里用了仅关键字参数(Python 3+的特性),但调用的时候没按照要求用关键字传递参数。下面给你拆解问题和解决办法:

常见错误场景分析

1. 函数定义包含*分隔的仅关键字参数

如果你的函数定义是类似这样的:

def your_function(df, *, rel_change):
    # 函数内部逻辑,比如处理df和rel_change
    pass

这里的*是一个分隔符,它后面的rel_change就是仅关键字参数——意思是调用这个函数时,rel_change必须通过rel_change=值的方式传递,不能用位置参数传递。

如果你调用时写成了:

your_function(my_dataframe, my_rel_change_array)

就会触发你遇到的错误,因为Python会把my_rel_change_array当成位置参数,但函数在df之后没有定义位置参数,只要求关键字参数rel_change。

2. 多仅关键字参数的传递问题

哪怕你拆分了逻辑(比如单独计算row_count传入mu),如果mu也是仅关键字参数,同样会报错。比如函数定义:

def calculate_value(df, *, rel_change, mu):
    return len(df) * mu + sum(rel_change)

错误调用:

row_count = len(my_dataframe)
calculate_value(my_dataframe, my_rel_change_array, row_count)

正确调用必须给rel_change和mu都加上关键字:

calculate_value(my_dataframe, rel_change=my_rel_change_array, mu=row_count)

快速排查步骤

  1. 打开你的函数定义代码,找有没有*符号——它后面的所有参数都是仅关键字参数。
  2. 检查函数调用语句,确保这些参数都用参数名=值的格式传递,而不是直接放值。
  3. 如果不需要仅关键字参数的限制,可以把函数定义里的*去掉,这样参数就可以用位置传递了(但如果是刻意设计的参数规范,不建议这么做)。

举个完整的正确示例:

import pandas as pd
import numpy as np

# 定义包含仅关键字参数的函数
def process_data(df, *, rel_change, mu):
    row_count = df.shape[0]
    result = row_count * mu + np.mean(rel_change)
    return result

# 准备数据
my_df = pd.DataFrame({'A': [1, 2, 3, 4]})
rel_arr = np.array([0.05, 0.1, 0.15])
row_count = my_df.shape[0]

# 正确调用:用关键字传递仅关键字参数
output = process_data(my_df, rel_change=rel_arr, mu=row_count)
print(output)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:25:47