2016-12-13 5 views
0

파이썬 코드에 문제가 있습니다. 특정 연도의 날짜가 있어야하며 평일에는 데이터 프레임을 가져온 다음이를 넘겨서 Excel로 넘깁니다. 그것은 모두 잘 작동하는 것,하지만 색인, dtype : 개체로 표시되는 경우에도 .loc 명령을 사용하여 내 인덱스를 해결할 수 없습니다. 난 항상 메시지 KeyError를 얻을 : 최대한 빨리 변환됩니다 내 날짜를 Excel로 넘겨로KeyError : '레이블 [2008-01-01]이 [index]에 없습니다.'

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

을 단지 ####하지만, 정보가 아직 날짜, 그래서 쉽게 엑셀로 변환 할 수 있습니다 날짜 형식으로. 아무도 그 두 가지 문제를 해결하는 방법을 말해 줄 수 있습니까? 대단히 감사합니다!

내 코드입니다 :

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

인덱스를 선택하여 발생하는 문제는 당신이 대신 문자열 날짜 객체를 검색하는 사실에서 비롯됩니다.

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

내가 아주 두 번째 문제를 이해하지 않는,하지만 난 팬더 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) 
을 포함하는 열을 포맷
+0

대단히 감사합니다! 내 모든 문제를 해결했습니다! :-) 나는 날짜와 함께 두 번째 문제가 있었는데, 지금은 완벽하게 잘 작동한다 :-) 빠른 지원에 다시 한번 감사드립니다 :-) – Tobi