我正在制作一个堆积条形图,其中x轴是公司名称,y轴是调用次数,堆栈是月份。总时间为一年。
我希望能够使用代码来调用月份的图表,其中堆栈是天,以及一周的图表,其中堆栈是天。因此,我试图让它更具可迭代性。
在我今年的工作代码中,我以这种方式获得条形图的月份:
Jan = pivot_table[1].astype(float).values
Feb = pivot_table[2].astype(float).values
Mar = pivot_table[3].astype(float).values
Apr = pivot_table[4].astype(float).values
May = pivot_table[5].astype(float).values
Jun = pivot_table[6].astype(float).values
Jul = pivot_table[7].astype(float).values
Aug = pivot_table[8].astype(float).values
Sep = pivot_table[9].astype(float).values
Oct = pivot_table[10].astype(float).values
Nov = pivot_table[11].astype(float).values
Dec = pivot_table[12].astype(float).values
然后我将这些月份写入OrderedDict
months = OrderedDict([('Jan', Jan), ('Feb', Feb), ('Mar', Mar), ('Apr',Apr), ('May',May), ('Jun',Jun),('Jul',Jul), ('Aug',Aug), ('Sep',Sep),('Oct',Oct),('Nov',Nov),('Dec',Dec)])
显然这并不理想。因此,我写了一个循环。
months=[]
for month in range(1,12):
months[month] = pivot_table[month].astype(float).values
这给出了错误IndexError: list assignment index out of range
所以我查找错误并发现理想的方法是将值附加到列表中。我的下一步是尝试:
months=[]
for month in range(1,12):
months.append(pivot_table[month].astype(float).values)
并相应地更改OrderedDict
:
months = OrderedDict([('Jan', 1), ('Feb', 2), ('Mar', 3), ('Apr',4), ('May',5), ('Jun',6),('Jul',7), ('Aug',8), ('Sep',9),('Oct',10),('Nov',11),('Dec',12)])
这给出了错误TypeError: 'int' object is not iterable
这似乎是一个人们认为非常简单的错误,但即使在阅读了所有的堆栈流程后,我也无法弄清楚如何修复它。我尝试在[]和[[]]中包含pivot_table行,但这没有用。我也尝试过这样做:
months=[]
for month in str(range(1,12)):
months.append(pivot_table[month].astype(float).values)
但得到了这个错误KeyError: '['
,如果我打印几个月,我会得到一个空列表,这让我认为它没有正确迭代。
答案 0 :(得分:1)
str(range(1, 12)) == '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]'
因此
for month in str(range(1, 12))
将按预期迭代字符串而不是数组。尝试改为
for month in range(1, 13):
months.append(pivot_table[str(month)].astype(float).values)
(13包含第12个索引)