我正在使用Dataframe
来操纵pandas
,然后将操纵后的数据呈现给用户。我不知道这是一个pandas
还是一个Django
问题(还是我的问题?)。我尝试将我的Dataframe
导出到.csv
中,然后什么也没有用熊猫重新读取。
考虑这个Dataframe
。
A B C
0 foo bar 10
1 foo bar2 20
2 foo bar 10
3 foo bar2 250
In my views.py,
df = df.groupby(['A', 'B']).sum().sum(level=['A',
'B']).fillna(0).reset_index()
context.update({'df': df.values})
return context
In my template
{% for A, B, C in df %}
<tr>
<td>{{ A }}</td>
<td>{{ B }}</td>
<td>{{ C }}</td>
</tr>
{% endfor %}
我希望看到
A B C
0 foo bar 20
1 foo bar2 270
我看到了
A B C
0 foo bar 1010
1 foo bar2 20250
这很奇怪,因为我尝试导出.csv
并重新导入。我相信这是一个错误。
答案 0 :(得分:0)
到目前为止,我了解到,当您尝试在Django中将查询集设置为数据框时,它仍将每个值都视为一个对象。因此,当您尝试sum
,subtract
等时,您将遇到与我相同的问题。
我如何处理。
#TODO: Use Django to export the .csv file instead of pandas.
qs = list(MyModel.objects.value_list('A', 'B', 'C'))
df = pd.DataFrame(qs, columns=['A', 'B', 'C'])
df.to_csv('location_of_csv/temp.csv', sep=';', index=None)
df = pd.read_csv('location_of_csv/temp.csv', sep=';')
df = df.groupby(['A', 'B']).sum().sum(level=['A', 'B']).fillna(0).reset_index()
context.update({'df': df.values})