KeyError:'标签[2008-01-01]不在[index]中

时间:2016-12-13 11:11:24

标签: python pandas keyerror

我的python代码有问题。我需要在一个数据帧中拥有特定年份的日期和工作日,然后将其交给excel。这一切似乎工作正常,但我无法使用.loc命令解决我的索引,即使它显示为索引,dtype:object。我总是得到消息KeyError:

'the label [2008-01-01] is not in the [index]'       

一旦我把它交给excel我的日期转换为####,但信息仍然是一个日期,所以我可以轻松地将它们在excel中转​​换为日期格式。谁能告诉我如何解决这两个问题?非常非常感谢你!

这是我的代码:

Start_of_year = date(Year_Start, 01, 01)
End_of_year = date(Year_Start, 12, 31) 

Day_Difference = (End_of_year - Start_of_year).days 
Calender_List = []

for i in range(0, Day_Difference + 1):
   Date = Start_of_year + timedelta(i)
   Calender_List.append({'Datum': Date, 'Wochentag':  weekday[Date.weekday()]})

Calender = pd.DataFrame(Calender_List)
Calender.set_index('Datum', inplace=True)

print Calender.head() 

Calender.to_excel(writer, 'Jahr %s' % Year_Start)   
writer.save() 

print Calender.index 
print Calender.loc['2008-01-01'] 

1 个答案:

答案 0 :(得分:1)

您选择索引时遇到的问题来自于您正在搜索字符串而不是日期对象。 相反,请使用以下内容:

print Calender.loc[date(2018, 01, 01)]

我不太了解你的第二个问题,但要转移到excel我建议使用pandas xlsxwriter。如果问题来自细胞太小,请使用:

worksheet.set_column(column, width)

如果问题是您的日期未被识别为日期,请格式化单元格或包含日期的列

date_format = workbook.add_format({'num_format': 'yyyy/mm/dd'})
worksheet.write('A1', date, date_format)
-- or --
worksheet.set_column(column, width, format)