我有一个很长的由日期系统组织的数据列表,我想重新组织并创建一个新列表-这样数据就更直观了。下面的更多内容:
数据的组织方式如下:
A1, B1, C1 ... L1, A2, B2, ...
从本质上讲,每个字母代表一个特定的月份(例如10月),并代表相应的日期。有十二个月,因此这种模式会在第12次输入后重复出现。
此外,以这种方式设置的数据集已经连续20年了。因此,来自:
A1(1970) to A1(1971)
每第992个条目重复一次。每个月有31天,对应于无效日期的无效值以“ ---”表示。我可以稍后删除它们。
我的目标是使用正确的年份来组织数据日历样式(10月1日,2月... 31日,11月1日等)。
到目前为止,我可以检索按月而不是按年组织的值列表。因此,我将获得所有年份的十月份的所有值,然后是所有年份的十一月的所有值,等等。
import itertools
discharge = list(itertools.chain.from_iterable([dischargeraw[::12] ...
dischargeraw[11::12]))
我的问题是我需要捕获第一个月(通过每12日附加一个值),直到附加第31个值为止。然后,我需要它跳过992个值,做同样的事情,每12个值捕获31次,然后跳过992。此外,整个过程将不得不重复十二次以捕获一年中的每个月,然后再次启动在第一个周期结束时-就是索引[31]。
实际上,它可能不得不跳过962(992-31),但是我可以修改这些内容。
对不起,我是编码新手,这是一个复杂的问题。
答案 0 :(得分:0)
每年需要372(31 * 12)个连续条目来表示。在一年之内,每天都是索引(天* 12)+月,例如3月4日为2 * 12 + 4 = 28。
这意味着要获取给定日期的条目,您可以执行以下操作:
def get_entry(entries, year, month, day):
return entries[year * 372 + day * 12 + month]
其中月和日为零索引,而年是数据集中第一年的偏移量。
要对整个数据集进行排序,可以执行以下操作:
def get_sorted_entries(entries, num_years):
sorted_entries = []
for year in range(num_years):
for month in range(12):
for day in range(31):
sorted_entries.append(get_entry(entries, year, month, day))
return sorted_entries