首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,生成3个带日期的列表

Python,生成3个带日期的列表
EN

Stack Overflow用户
提问于 2014-03-03 20:27:29
回答 1查看 53关注 0票数 2

我需要一些帮助从CSV文件中创建一些列表:

现在,我导入了一个文件并创建了两个列表。我的代码如下:

列表week包含取自row[0]的所有周的日期。

列表weight = []包含来自row[1]的所有权重。

到目前为止,你在这里看到的代码:

代码语言:javascript
复制
import csv
import datetime
import matplotlib.pyplot as plt
from pprint import pprint

#Open Data/File
data1 = open('wloss.csv', 'r')
reader1 = csv.reader(data1, delimiter=',')

week = []
weight = []
dateTime = []

week_year_2011 = []
week_year_2012 = []
week_year_2013 = []
weight_year_2011 = []
weight_year_2012 = []
weight_year_2013 = []

for row in reader1:

    if row[0] != 'week':
        week.append(row[0][:-13])
    if row[1] != 'weight loss':
        weight.append(row[1])

for item in week:
    dateTime.append(datetime.datetime.strptime(item, '%Y-%m-%d'))

我拿到的周列表也是从2004年到2014年

如下所示(您只能看到2005年的数据):

代码语言:javascript
复制
datetime.datetime(2005, 4, 10, 0, 0),
datetime.datetime(2005, 4, 17, 0, 0),
datetime.datetime(2005, 4, 24, 0, 0),
datetime.datetime(2005, 5, 1, 0, 0),
datetime.datetime(2005, 5, 8, 0, 0),
datetime.datetime(2005, 5, 15, 0, 0),
datetime.datetime(2005, 5, 22, 0, 0),

我知道2011年的第一个日期和最后一个日期是:

代码语言:javascript
复制
datetime.datetime(2011, 1, 2, 0, 0),
datetime.datetime(2011, 12, 25, 0, 0),

我如何将2011、2012和2013年的datetime数据放入3个新列表中,就像我在下面定义的那样:

代码语言:javascript
复制
week_year_2011 = []
week_year_2012 = []
week_year_2013 = []

应该做一个for语句还是什么??

另外,我如何从2011、2012、2013中获得正确的权重,并将它们放入其他3个类似的列表中:

代码语言:javascript
复制
weight_year_2011 = []
weight_year_2012 = []
weight_year_2013 = []

我必须用2011,2012和2013年的数据制作3个图(在1个图中)。希望有人能帮助如何制作这些新的列表,并在其中放入正确的数据。

EN

回答 1

Stack Overflow用户

发布于 2014-03-03 20:32:24

我会使用字典按日期对数据进行分组。

您似乎有一个CSV文件,其标题位于第一行。以下是一个更简单的版本,它按日期将数据拆分到单独的列表中:

代码语言:javascript
复制
import csv
import datetime

by_year = {}

with open('wloss.csv', 'rb') as data1:
    reader = csv.reader(data1)
    next(reader, None)  # skip first row with headers

    for week, weight_loss in reader:
        date = datetime.datetime.strptime(week, '%Y-%m-%d').date()
        by_year.setdefault(date.year, []).append((week, weight_loss))

这将构建一个以年份为关键字的字典,每个值都有一个(date, weight_loss)元组列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22146809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档