【发布时间】:2014-06-03 08:04:42
【问题描述】:
给定这样的输入:
"Date 3" "Location A" "some data"
"Date 3" "Location B" "some data"
"Date 3" "Location C" "some data"
"Date 2" "Location A" "some data"
"Date 2" "Location B" "some data"
"Date 1" "Location A" "some data"
"Date 1" "Location C" "some data"
我想将它排列成列(最终将其放入电子表格中),如下所示:
Location A Location B Location C
Date 3 some data some data some data
Date 2 some data some data None
Date 1 some data None some data
使用以下代码,当我将日期分为“月”和“日”时,我让它工作,并将日期视为整数,但一个月后,它们使用相同的日整数,所以它写在它上面。
log = [["Location A", "somedata", 3, "Month"],["Location B", "somedata", 3, "Month"],
["Location C", "somedata", 3, "Month"],["Location A", "somedata", 2, "Month"],
["Location B", "somedata", 2, "Month"],["Location A", "somedata", 1, "Month"],
["Location C","somedata",1,"Month"]]
locations = ["Location A","Location B","Location C"]
location = locations
days = []
for location, time, day, month in log:
for i in range(len(days),day):
days.append([i+1] + [None for x in locations])
days[day - 1][1 + locations.index(location)] = time
days[day - 1][0] = month + " " + str(day) # I just hack the date together here
days = [i for i in days if i.count(None) < len(locations)]
locations.insert(0,"Date")
days.insert(0,locations)
days = list(zip(*days))
这会给我(正确)
['Date', 'Location A', 'Location B', 'Location C']
['Month 1', 'somedata', None, 'somedata']
['Month 2', 'somedata', 'somedata', None]
['Month 3', 'somedata', 'somedata', 'somedata']
但我想将日期保持为一个字符串,并在每次字符串更改时移动到下一列,而不是将日期用作整数。
locations = ["A","B","C"]
log = [ ["Date 2", "A", "Time"],["Date 2", "B", "Time"],["Date 2", "C", "Time"],
["Date 1", "A", "Time"],["Date 1", "B", "Time"],["Date 1", "C", "Time"] ]
out = []
j = 0
for index, day in enumerate(log):
date, location, time = day
out.append([date] + [None for x in locations])
if(log[index][0] != log[index-1][0] and index != 0):
j += 1
out[j][1 + locations.index(location)] = location
使用这样的东西,我可以得到:
['Date 2', 'A', None, 'C']
['Date 2', 'A', 'B', 'C']
['Date 1', None, None, None]
['Date 1', None, None, None]
['Date 1', None, None, None]
但是它用None填充了太多列,所以数据与日期不对应。
有人有什么想法吗?我是初学者,我正在使用 Python 3.3
非常感谢您。
【问题讨论】:
-
+1 提出了一个精心设计的问题,向我们展示了您迄今为止所做的真诚尝试
标签: python list python-3.x matrix multidimensional-array