我有NoneType函数返回,如何在django视图中打印/转换它?

时间:2015-06-14 16:12:52

标签: python django function django-views nonetype

我使用生命线库进行生存分析,一个名为CoxPHFitter().print_summary()的函数返回一个NoneType对象,这是survat.py中的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import lifelines
from lifelines import CoxPHFitter,AalenAdditiveFitter
import os

def printcox(*args):
    module_dir = os.path.dirname(__file__)  # get current directory
    file_path = os.path.join(module_dir, 'prostate1.csv')
    prostate_dataset=pd.read_csv(file_path)
    # prostate_dataset=pd.read_csv(args[0])
    prostate_dataset=prostate_dataset[list(args[1:])]

    for x in prostate_dataset:
        if (prostate_dataset[x].dtype=="object"):
            cat=pd.Series(list(prostate_dataset[x]))
            for y in pd.unique(cat):
                prostate_dataset[x+'.'+y]=pd.get_dummies(cat)[y]
            prostate_dataset.drop(x, axis=1, inplace=True)
    #        prostate_dataset=prostate
    #        print prostate_dataset
        else:
            pass
#    for z in prostate_dataset:
#                    print z
    cf=CoxPHFitter()
    cf.fit(prostate_dataset,args[1],event_col=args[2])
    return cf.print_summary()

当我用spyder调用函数时,结果如下: enter image description here

但是当我在views.py中调用它并尝试在我的.html中打印它时,它没有打印任何内容,因为它是NoneType数据,我应该怎么做才能解决这个问题?

这是我的views.py

def listindex(request):
    # Handle file upload
    if request.method == 'POST':

        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            newdoc = Document(docfile = request.FILES['docfile'])
            newdoc.save()
            # ert= form.cleaned_data['aalenMember']
            # Redirect to the document list after POST
            return HttpResponseRedirect(reverse('survat.survatapp.views.listindex'))
    else:
        form = DocumentForm() # A empty, unbound form

    # Load documents for the list page
    documents = Document.objects.all()

    def delete_matrix():
        documents = Document.objects.all()
        for document in documents:
            document.delete()

    if request.method == 'POST':
        tempCox = []
        tempAalen = []
        timeColumn = request.POST.get('timeColumn', '')
        tempCox.append(timeColumn)
        tempAalen.append(timeColumn)
        eventColumn = request.POST.get('eventColumn', '')
        tempCox.append(eventColumn)
        tempAalen.append(eventColumn)
        coxMember = request.POST.get('coxMember', '')
        aalenMember = request.POST.get('aalenMember', '')
        coxMemberI = int(float(coxMember))
        aalenMemberI = int(float(aalenMember))
        coxCovariate = []
        aalenCovariate = []
        for j in range(1,coxMemberI):
            coxCovariate.append(request.POST.get('coxCovariate'+str(j), ''))
            tempCox.append(request.POST.get('coxCovariate'+str(j), ''))
        for k in range(1,aalenMemberI):
            aalenCovariate.append(request.POST.get('aalenCovariate'+str(k), ''))
            tempAalen.append(request.POST.get('aalenCovariate'+str(k), ''))
        ert = request.POST.get('coxMember', '')
        ert = str(type(int(float(ert))))
    else:
        tempCox = []
        tempAalen = []
        ert = "niji"
        timeColumn = "niji"
        eventColumn = "niji"
        coxMember = "niji"
        aalenMember = "niji"
        coxMemberI = "niji"
        aalenMemberI = "niji"
        coxCovariate = []
        aalenCovariate = []
        for j in range(1,20):
            coxCovariate.append ("niji")
        for k in range(1,20):
            aalenCovariate.append ("niji")

    asdf=printcox('prostate1.csv','dtime','status1','age','hg','sz','sg','pf','rx')
    # Render list page with the documents and the form
    return render_to_response(
        'survatapp/list.html',
        {'documents': documents, 'form': form, 'ert':ert, 'wer':tempAalen,'asdf':asdf},
        context_instance=RequestContext(request)
    )

我在我的.html

中用{{ asdf }}来调用它

提前感谢:)

0 个答案:

没有答案