我尝试从名为date_range
的数据列表中存储一年的星期数,该数据存储了诸如
date_range[1] = DatetimeIndex(['2020-03-02', '2020-03-03', '2020-03-04', '2020-03-05',
'2020-03-06', '2020-03-07', '2020-03-08', '2020-03-09',
'2020-03-10', '2020-03-11', '2020-03-12', '2020-03-13',
'2020-03-14', '2020-03-15', '2020-03-16', '2020-03-17',
'2020-03-18', '2020-03-19', '2020-03-20', '2020-03-21',
'2020-03-22', '2020-03-23', '2020-03-24', '2020-03-25',
'2020-03-26', '2020-03-27', '2020-03-28', '2020-03-29',
'2020-03-30', '2020-03-31', '2020-04-01', '2020-04-02',
'2020-04-03', '2020-04-04', '2020-04-05'],
dtype='datetime64[ns]', freq='D')
通过使用以下代码
weeknumber= []
for i in range(28):
for j in range(35):
weeknumber[i][j] = pd.Timestamp(date_range[i][j]).weekofyear
但是,IDE显示错误“列表分配索引超出范围”。如何解决这个问题?
答案 0 :(得分:1)
要设置2d列表,您可以使用以下内容并将cols和row替换为您的值。只需记住行和列会增加1。
weeknumber= [[0]*cols]*rows
答案 1 :(得分:1)
当list
中的python
为空时,您无法将值分配给列表的未分配索引。
所以您在这里有2个选择:
append
就像: list.append(value)
loop
,以便在主要list
之前为您的for
分配一个值。如下所示:i = 0
while ( i < index_you_want):
list[i] = 0
...
#here your main code
答案 2 :(得分:1)
使用此:
weeknumber = []
for i in range(28):
weeknumber.append([])
for j in range(35)):
weeknumber[i].append(pd.Timestamp(date_range[i][j]).weekofyear)
要了解为什么您会比其他方法得到令人惊讶的结果,请参阅this answer to your other question