Python 方法的有效参数
熊猫似乎忽略了额外的(无效的)参数。例如Python 方法的有效参数,python,pandas,Python,Pandas,熊猫似乎忽略了额外的(无效的)参数。例如 import pandas as pd df=pd.read_excel('myfile.xlsx', some_dummy_param=True) 我期望(但没有得到)类似于 TypeError: __init__() got an unexpected keyword argument 'some_dummy_param' 问题是,由于没有错误,我认为“StruthUMyMyPARAM”是有效的。这当然不是意料之中的。有没有办法确保只向read\
import pandas as pd
df=pd.read_excel('myfile.xlsx', some_dummy_param=True)
我期望(但没有得到)类似于
TypeError: __init__() got an unexpected keyword argument 'some_dummy_param'
问题是,由于没有错误,我认为“StruthUMyMyPARAM”是有效的。这当然不是意料之中的。有没有办法确保只向read\u excel方法传递有效参数?没有,没有
关键字参数通常通过Pandas-through传递,它要么被转发,要么被视为dict
。使用此dict
的功能可以自由检查是否有他们期望的以外的键
你可以这样做:
def safe_read_excel(self, f_name, *args, **kwargs):
# Check if kwargs contains wrong parameters
if set(kwargs.keys()).difference(set(<expected keys>)):
raise ValueError(<some messagge>)
return self.read_excel(f_name, *args, **kwargs)
pd.DataFrame.safe_read_excel = safe_read_excel
def safe_read_excel(self,f_name,*args,**kwargs):
#检查kwargs是否包含错误的参数
如果设置(kwargs.keys())。差异(设置()):
提升值错误()
返回self.read\u excel(f\u名称,*args,**kwargs)
pd.DataFrame.safe\u read\u excel=safe\u read\u excel
然而,这将
dict
。使用此dict
的功能可以自由检查是否有他们期望的以外的键
你可以这样做:
def safe_read_excel(self, f_name, *args, **kwargs):
# Check if kwargs contains wrong parameters
if set(kwargs.keys()).difference(set(<expected keys>)):
raise ValueError(<some messagge>)
return self.read_excel(f_name, *args, **kwargs)
pd.DataFrame.safe_read_excel = safe_read_excel
def safe_read_excel(self,f_name,*args,**kwargs):
#检查kwargs是否包含错误的参数
如果设置(kwargs.keys())。差异(设置()):
提升值错误()
返回self.read\u excel(f\u名称,*args,**kwargs)
pd.DataFrame.safe\u read\u excel=safe\u read\u excel
然而,这将
是的,这不是一个需要解决的小问题<代码>pd.read_excel接受签名中的
**kwargs
。这意味着您可以随意传递任何关键字参数,因为read\u excel
不需要使用任何关键字参数
解决这个问题的一种方法是
read\u excel
read\u excel
inspect
模块确定哪些参数pd.read\u excel
接受。特别是,inspect.signature
方法返回一个signature
对象,您可以从中查询参数
属性。这将返回一个mappingproxy
(实际上是一个不可变的字典)
步骤(3)涉及在关键点上执行设置的相交,然后仅从相交处重建新的参数列表
valid_params = {k : params[k] for k in params.keys() & args.keys()}
print(valid_params)
{'io': 'myfile.xlsx'}
这形成了有效的参数列表,是(4)的基础
是的,这不是一个需要解决的小问题<代码>pd.read_excel接受签名中的
**kwargs
。这意味着您可以随意传递任何关键字参数,因为read\u excel
不需要使用任何关键字参数
解决这个问题的一种方法是
read\u excel
read\u excel
inspect
模块确定哪些参数pd.read\u excel
接受。特别是,inspect.signature
方法返回一个signature
对象,您可以从中查询参数
属性。这将返回一个mappingproxy
(实际上是一个不可变的字典)
步骤(3)涉及在关键点上执行设置的相交,然后仅从相交处重建新的参数列表
valid_params = {k : params[k] for k in params.keys() & args.keys()}
print(valid_params)
{'io': 'myfile.xlsx'}
这形成了有效的参数列表,是(4)的基础
您是否试图在pandas中的不同读取函数中使用相同的参数?pandas将关键字参数**kwds作为读取函数中的参数,这就是为什么它不会抛出错误的原因。您是否试图在pandas中的不同读取函数中使用相同的参数?pandas将关键字参数**kwds作为读取函数中的参数,这就是为什么它不会抛出错误的原因。
df = pd.read_excel(**valid_params)