【问题标题】:KeyError: 'the label [2008-01-01] is not in the [index]'KeyError: '标签 [2008-01-01] 不在 [index] 中'
【发布时间】:2016-12-13 11:11:23
【问题描述】:

我的 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'] 

【问题讨论】:

    标签: python pandas keyerror


    【解决方案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) 
    

    【讨论】:

    • 非常感谢!它解决了我所有的问题!! :-) 我遇到了日期的第二个问题,现在它工作得非常好 :-) 再次感谢您的快速支持 :-)
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2019-01-09
    • 1970-01-01
    相关资源
    最近更新 更多