gpt4 book ai didi

python - 在 python 中传递可选的数据帧参数

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:00 24 4
gpt4 key购买 nike

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

下面的代码给出了一个

"ValueError: Wrong number of dimensions" error.

我尝试了另外几个想法,但它们都会导致某种形式的错误。

除了这个问题,当参数作为显式 DataFrame 列传递时,p 作为单个列,q 作为列表列,代码按需要工作。是否有一种聪明的(或确实有任何)方法来传递数据框,以便可以将列隐式分配给它?

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 is not None:

Pandas 不知道您要将数据框中的哪个值与 None 进行比较,因此它会抛出错误。 is 检查 datafrNone 是否都指向同一个对象,这是一种更严格的身份检查。参见 this explanation .

其他提示:

  • 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)

关于python - 在 python 中传递可选的数据帧参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com