【发布时间】:2017-09-03 10:56:09
【问题描述】:
我正在尝试在 python 中解析一个 csv 文件并打印每天的 order_total 的总和。以下是示例 csv 文件
order_total created_datetime
24.99 2015-06-01 00:00:12
0 2015-06-01 00:03:15
164.45 2015-06-01 00:04:05
24.99 2015-06-01 00:08:01
0 2015-06-01 00:08:23
46.73 2015-06-01 00:08:51
0 2015-06-01 00:08:58
47.73 2015-06-02 00:00:25
101.74 2015-06-02 00:04:11
119.99 2015-06-02 00:04:35
38.59 2015-06-02 00:05:26
73.47 2015-06-02 00:06:50
34.24 2015-06-02 00:07:36
27.24 2015-06-03 00:01:40
82.2 2015-06-03 00:12:21
23.48 2015-06-03 00:12:35
我的目标是每天打印sum(order_total)。例如结果应该是
2015-06-01 -> 261.16
2015-06-02 -> 415.75
2015-06-03 -> 132.92
我已经编写了以下代码 - 它还没有执行逻辑,但我正在尝试通过打印一些示例语句来查看它是否能够按要求进行解析和循环。
def sum_orders_test(self,start_date,end_date):
initial_date = datetime.date(int(start_date.split('-')[0]),int(start_date.split('-')[1]),int(start_date.split('-')[2]))
final_date = datetime.date(int(end_date.split('-')[0]),int(end_date.split('-')[1]),int(end_date.split('-')[2]))
day = datetime.timedelta(days=1)
with open("file1.csv", 'r') as data_file:
next(data_file)
reader = csv.reader(data_file, delimiter=',')
order_total=0
if initial_date <= final_date:
for row in reader:
if str(initial_date) in row[1]:
print 'initial_date : ' + str(initial_date)
print 'Date : ' + row[1]
order_total = order_total + row[0]
else:
print 'Else'
print 'Date ' + str(row[1]) + 'Total ' +str(order_total)
order_total=0
initial_date = initial_date + day
根据我目前的逻辑,我遇到了这个问题 -
- 它没有为每个日期打印正确的总和
- 2015-06-01 : 261.16
- 2015-06-02:368.03(应为 415.75)
- 2015-06-03:空
使用sum_orders_test('2015-06-01','2015-06-03');调用函数
我知道有一些愚蠢的逻辑问题,但是对于编程和 python 新手,我无法弄清楚。
【问题讨论】:
-
您使用
delimiter=',',但在您的.csv中没有逗号 -
请编辑之前的帖子或评论现有答案。不要转发
-
@cricket_007 哦,天哪,又是同样的问题...标记它,不要因为对这些人的问题投反对票而失去声誉...
-
而且不可能重复,是一样的!请举报!