KeyError: 'the label [2008-01-01] is not in the [index]'
KeyError: 'the label [2008-01-01] is not in the [index]'
我的 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']
您在选择索引时遇到的问题是因为您搜索的是字符串而不是日期对象。
相反,请使用以下内容:
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)
我的 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']
您在选择索引时遇到的问题是因为您搜索的是字符串而不是日期对象。 相反,请使用以下内容:
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)