Series
很容易。我把它传递给paginator
。但是,当我使用DataFrame
时,它是调用"系列的真值是模糊的"。也许,count
方法存在问题,但我不知道如何更改它。在我的项目DataFrame
中,必须按行拆分。
def listing(request):
contact_list = pd.DataFrame(np.arange(12).reshape(4,3))
paginator = Paginator(contact_list, 1) # Show 1 row per page
page = request.GET.get('page')
try:
contacts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
contacts = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
contacts = paginator.page(paginator.num_pages)
return render(request, 'list.html', {'contacts': contacts})
答案 0 :(得分:1)
问题可能是由于DataFrame.__iter__
按列而不是按行进行迭代。如果要获取数据帧行的迭代器,可以调用df.iterrows()
或df.values
。
答案 1 :(得分:1)
您必须隔离列,然后在每个列上使用分页,然后将它们附加在一起,因为数据框在列上进行迭代。基本上,通过分隔每一列,您可以使迭代器遍历行:
contact_list = pd.DataFrame(np.arange(12).reshape(4,3))
paginator1 = Paginator(contact_list ['col1'],1)
paginator2 = Paginator(contact_list ['col2'],1)
答案 2 :(得分:0)
我已经使用自己的数据帧测试了以下代码,并且可以正常工作。只需将数据框转换为字典列表,分页器就可以正常工作。
抱歉,我刚刚提出了这个问题
records = df.to_dict(orient='records') paginator = Paginator(records, num_of_items) page = request.GET.get('page') records = paginator.get_page(page) return render(request, 'list.html', {'contacts': records})