如何在django中显示csv文件的行?

时间:2017-05-22 23:31:04

标签: django pandas django-tables2

我有一个django应用程序,它允许用户上传一个csv文件,比如大学排名的csv文件。我必须处理已上传的数据。例如,灰显任何具有字符串值的列并计算平均值和标准值。列的所有值的偏差。为此,我使用Pandas并将csv文件转换为pandas数据帧。

如何使用django显示csv文件中的数据集?列名称不能进行硬编码,因为用户可能会上传任何csv文件。我检查了django-tables2并做了以下

csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
context = {'loaded_data': data}
return render(request, "dataflow/table.html", context)

但我收到错误ValueError: Expected table or queryset, not DataFrame

2 个答案:

答案 0 :(得分:7)

Pandas数据框可以单独转换为html表。你可以尝试

csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
data_html = data.to_html()
context = {'loaded_data': data_html}
return render(request, "dataflow/table.html", context)

在html页面中,使用{{loaded_data | safe}}呈现表格。

答案 1 :(得分:1)

django-tables2无法处理dataframes。你已经把它转换为django-tables2理解的东西,即:

from django_tables2.tables import Table

在视图中:

csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
df_table = Table(data.to_dict(orient='list'))
context = {'df_table': df_table}
return render(request, "dataflow/table.html", context)

在模板中:

{% load render_table from django_tables2 %}
{% render_table df_table %}

这是一个简单的例子,您可能需要在dataframe上做更多的工作,甚至可以继承Table类。

相关问题