【发布时间】:2016-01-22 08:12:41
【问题描述】:
作为输入,我有一个 CSV 文件,其中包含每次的时间和一堆数字。
Time,F1,F2,F3
8:11,5,2,4
9:25,9,8,2
9:39,7,3,2
9:53,6,5,1
10:07,4,6,7
10:21,7,3,1
10:35,5,6,7
11:49,1,2,1
12:03,3,3,1
我想输出按 Avg 和 Sum 列分组的每小时的表格:
Time,SUM F1,SUM F2,SUM F3,AVG F1,AVG F2,AVG F3
8:00,5,2,4,5,2,4
9:00,22,16,5,7.3,5.3,1.6
10:00,16,15,15,5.3,5,5
11:00,1,2,1,1,2,1
12:00,3,3,1,3,3,1
到目前为止,我一直在用字典来做,其中小时是键,值是计数和总和的列表,然后将总和除以计数得到平均值。 我确信必须有更清洁的方法来做到这一点。也许一些图书馆可以使用这个。有什么建议吗?
【问题讨论】:
-
你的方法很好。也没有那么多代码。将内容添加到三个字典的循环,每个字典使用 setdefault(hour, []).append(F1) 和 setdefault(hour, []).append(F2) 和 setdefault(hour, []).append(F3)。然后对于每个字典,您每小时遍历一次并在列表上调用“sum”并除以 count(list),同时注意处理列表为空时发生的情况。
-
Pandas是用于此类数据处理的好库:pandas.pydata.org
标签: python csv pandas aggregate