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

Python 我有非类型函数返回,如何在django视图中打印/转换它?,python,django,function,django-views,nonetype,Python,Django,Function,Django Views,Nonetype,我使用生命线库进行生存分析,这个函数名为CoxPHFitter().print_summary()返回一个非类型对象,下面是我在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

我使用生命线库进行生存分析,这个函数名为
CoxPHFitter().print_summary()
返回一个非类型对象,下面是我在
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()
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)
    )
当我用调用spyder中的函数时,结果如下:

但是当我在我的
views.py
中调用它并尝试在我的.html中打印它时,它什么也不打印,因为它是非类型数据,我应该怎么处理

这是我的
视图。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()
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)
    )
我用my.html中的
{{asdf}}
调用它


提前感谢:)

如果
CoxPHFitter
没有将结果作为字符串公开,则可以将打印输出重定向到变量。请参见,您也可以尝试使用
cf.summary
,它返回这些摘要统计信息的数据帧。也许类似于
cf.summary.to_string()
?非常感谢@SylvainBiehler,它可以无缝地工作:D@Cam.Davidson.Pilon你好,皮隆先生,很高兴在这里见到你,谢谢你的建议,我会试一试的。嗯,顺便问一下,你收到我的电子邮件了吗?它是从milexjaro@hotmail.com,仍然坚持在coxPH中将子类别变量作为一个整体类别处理:(