Для записи я столкнулся с этим сообщением при решении этой проблемы:
Многострочная строка в JSTL добавляется в качестве атрибута title текстового поля. Затем Javascript добавляет это как текст по умолчанию в текстовое поле. Чтобы очистить этот текст от фокуса, значение должно совпадать с заголовком ... но сбой, так как много текстовых редакторов помещают\r\n вместо\n. Поэтому follownig избавится от нежелательных\r:
<% pageContext.setAttribute("newLineChar", "\r"); %>
<c:set var="textAreaDefault" value="${fn:replace(textAreaDefault, newLineChar, '')}" />
time
объекты в timedelta
объекты, которые затем могут быть суммированы вместе. (см. строку «печать») from datetime import datetime, timedelta
import pandas as pd
phone = PhoneRecord.objects.all()
df = pd.DataFrame(list([i.__dict__ for i in phone])) # create pd.df from model query
df.et = df.et.fillna('00:00:00') # some records are blank
print(df.et)
print("SUM:", sum([datetime.combine(datetime.min, time) - datetime.min for time in df.et.tolist()], timedelta()))
Вы должны получить что-то вроде этого:
0 00:00:20
1 00:00:20
2 00:00:50
3 00:00:30
4 00:00:20
SUM: 0:02:20
Мне пришлось немного изменить вещи, чтобы заставить их работать на моем конце, так что, надеюсь, То же самое относится и к вам, и к вашей версии Панд и Джанго. Надеюсь, это поможет!
Все вычисления, такие как получение средних значений, подсчет и т. Д., Должны выполняться (если возможно) с использованием механизма базы данных. Я не знаю о лежащей в основе проблеме, но использование pandas
на стороне сервера для получения средних значений определенно излишне. Вам нужно взглянуть на средство агрегации Джанго.
Кроме того, вам, вероятно, необходимо реструктурировать модель. Если вам нужно сохранить продолжительность телефонного разговора, вы можете использовать вместо него FloatField, например
class PhoneRecord(models.Model):
duration = models.FloatField(blank=True, default=0.0, help_text=_('duration in seconds'))
# other fields...
# also, you can set up the duration field with `editable=False`, and
# calculate its value each time the record is created
В этом случае вы можете использовать Avg
:
from django.db.models import Avg
PhoneRecords.objects.all().aggregate(Avg('duration'))
и получить что-то вроде этого
{'duration_avg': 12.3}