我有一个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
答案 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
类。