Это формат моих данных:группа список по дате во время подсчета строк значений
Date hits returning
2014/02/06 10 0
2014/02/06 25 0
2014/02/07 11 0
2014/02/07 31 1
2014/02/07 3 2
2014/02/08 6 0
2014/02/08 4 3
2014/02/08 17 0
2014/02/08 1 0
2014/02/09 6 0
2014/02/09 8 1
Требуемая мощность является:
date, sum_hits, sum_returning, sum_total
2014/02/06 35 0 35
2014/02/07 44 3 47
2014/02/08 28 3 31
2014/02/09 14 1 15
Выход для использования Google Charts
Для получения уникальной даты и подсчета значений для каждой строки я создаю словарь, а с помощью даты имеет ключ, что-то вроде:
# hits = <object with the input data>
data = {}
for h in hits:
day = h.day_hour.strftime('%Y/%m/%d')
if day in data:
t_hits = int(data[day][0] + h.hits)
t_returning = int(data[day][1] + h.returning)
data[day] = [t_hits, t_returning, t_hits + t_returning]
else:
data[day] = [
h.hits,
h.returning,
int(h.hits + h.returning)]
Это создает что-то вроде:
{
'2014/02/06' = [35 0 35],
'2014/02/07' = [44 3 47],
'2014/02/08' = [28 3 31],
'2014/02/09' = [14 1 15]
}
И для создания требуемой выходной мощности, что я делаю это:
array()
for k, v in data.items():
row = [k]
row.extend(v)
array.append(row)
, который создает массив с требуемым форматом:
[
[2014/02/06, 35, 0, 35],
[2014/02/07, 44, 3, 47],
[2014/02/08, 28, 3, 31],
[2014/02/09, 14, 1, 15],
]
Итак, мой вопрос в основном заключается в том, если есть лучший способ сделать это, или некоторая внутренняя команда python, которая позволяет мне группировать по строкам поля при подсчете значений строк.
Ваш вход отсортирован по дате? –
да, отсортировано по дате – nbari
Тогда ответ ниже - правильный подход; используйте 'groupby'. –