F. *_*. R 1 python dataframe pandas
我没有明确指定DataFrame下面代码中的列,而是试图给出一个传递数据框名称的选项,但没有太大的成功.
下面的代码给出了一个
"ValueError:维数错误"错误.
我尝试了另外几个想法,但它们都会导致一种或另一种形式的错误.
除了这个问题,当参数作为显式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)
Run Code Online (Sandbox Code Playgroud)
总结一下:
目前的用法:
cdf(df['var1'], [df['var2'], df['var3']])
Run Code Online (Sandbox Code Playgroud)
所需用法:
cdf('var1', ['var2', 'var3'], datafr=df)
Run Code Online (Sandbox Code Playgroud)
更改if datafr != None:到if datafr is not None:
Pandas不知道您尝试将数据帧中的哪个值与None进行比较,因此会抛出错误.is如果两个检查datafr和None是指向同一个对象,它是一个更严格的身份检查.看到这个解释.
其他提示:
Python迭代列表
#change this
for i in range(len(q)):
q[i]=datafr[q[i]]
#to this:
for i in q:
q[i] = datafr[q]
Run Code Online (Sandbox Code Playgroud)如果q是必需参数,则在定义函数时不要执行q = [].如果它是可选参数,请忽略我.
Python可以使用position来将传递给函数调用的参数与定义中的参数进行匹配.
cdf('var1', ['var2', 'var3'], datafr=df)
#can be written as:
cdf('var1', ['var2', 'var3'], df)
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |