2016-12-13 2 views
0

Ich habe ein Problem mit meinem Python-Code. Ich muss das Datum eines bestimmten Jahres haben und es ist wochentags in einem Datenrahmen und dann übergebe es an Excel. Alles scheint gut zu funktionieren, aber ich kann meinen Index nicht mit dem Befehl .loc adressieren, obwohl er als Index, dtype: object, angezeigt wird. Ich bekomme immer die Meldung KeyError:KeyError: 'Das Label [2008-01-01] ist nicht im [Index]'

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

Sobald ich es über zu meine Daten konvertiert Excel nur ####, aber die Information ist immer noch ein Datum, so kann ich in Excel leicht wandeln sie zu einem Datumsformat. Kann mir jemand sagen, wie ich diese beiden Probleme beheben kann? Vielen vielen Dank!

Dies ist mein Code:

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

Antwort

1

Das Problem, das Sie mit der Auswahl des Index kommt von der Tatsache haben, dass Sie für eine Zeichenfolge anstelle eines Date-Objekt suchen. Verwenden Sie stattdessen die folgenden:

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

ich nicht ganz Ihre zweite Frage verstehen, aber übertragen ich Pandas xlsxwriter verwenden würde zu übertreffen beraten. Wenn das Problem aus der Zelle zu klein kommt, verwenden:

worksheet.set_column(column, width) 

Wenn das Problem, dass Sie das Datum ist nicht als ein Datum erkannt wird, dann die Zellen formatieren oder die die Spalte enthält die Daten

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

Vielen Dank! Es löste alle meine Probleme !! :-) ich hatte das zweite problem mit dem date, und jetzt klappt es ganz einwandfrei :-) Danke nochmal für deine schnelle unterstützung :-) – Tobi

Verwandte Themen