繁体   English   中英

在python中传递可选的dataframe参数

[英]passing optional dataframe parameter in python

我没有在下面的代码中显式指定DataFrame列,而是尝试提供一种通过本身传递数据框名称的选项,但没有取得太大的成功。

下面的代码给出了

“ ValueError:尺寸错误”错误。

我尝试了另外两个主意,但它们都会导致某种形式或另一种形式的错误。

除了这个问题,当参数作为显式DataFrame列传递, p作为单列传递和q作为列列表传递时, DataFrame工作。 是否有一种聪明的(或实际上是任何一种)数据帧传递方式,以便可以隐式地为其分配列?

def cdf(p, q=[], datafr=None):
    if datafr!=None:
        p = datafr[p]
        for i in range(len(q)):
            q[i]=datafr[q[i]]
...
(calculate conditional probability tables for p|q) 

总结一下:

当前用法:

cdf(df['var1'], [df['var2'], df['var3']])

所需用法:

cdf('var1', ['var2', 'var3'], datafr=df)

if datafr != None:更改if datafr != None: if datafr is not None:

熊猫不知道您要与“无”进行比较的数据框中的哪个值,因此会引发错误。 is检查datafrNone是否都指向同一对象,这是更严格的身份检查。 请参阅此说明

其他提示:

  • Python遍历列表

     #change this for i in range(len(q)): q[i]=datafr[q[i]] #to this: for i in q: q[i] = datafr[q] 
  • 如果q是必需参数,则在定义函数时不要执行q = []。 如果是可选参数,请忽略我。

  • Python可以使用位置将传递给函数调用的参数与定义中的参数进行匹配。

     cdf('var1', ['var2', 'var3'], datafr=df) #can be written as: cdf('var1', ['var2', 'var3'], df) 

暂无
暂无

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

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