Rozważmy plik wejściowy, b.dat
:Pandy - konwersja dataframe multi-indeks obiektu datetime
string,date,number
a string,2/5/11 9:16am,1.0
a string,3/5/11 10:44pm,2.0
a string,4/22/11 12:07pm,3.0
a string,4/22/11 12:10pm,4.0
a string,4/29/11 11:59am,1.0
a string,5/2/11 1:41pm,2.0
a string,5/2/11 2:02pm,3.0
a string,5/2/11 2:56pm,4.0
a string,5/2/11 3:00pm,5.0
a string,5/2/14 3:02pm,6.0
a string,5/2/14 3:18pm,7.0
mogę Grupa miesięczne sumy tak:
b=pd.read_csv('b.dat')
b['date']=pd.to_datetime(b['date'],format='%m/%d/%y %I:%M%p')
b.index=b['date']
bg=pd.groupby(b,by=[b.index.year,b.index.month])
bgs=bg.sum()
Indeks zgrupowanych sumy wygląda :
bgs
number
2011 2 1
3 2
4 8
5 14
2014 5 13
bgs.index
MultiIndex(levels=[[2011, 2014], [2, 3, 4, 5]],
labels=[[0, 0, 0, 0, 1], [0, 1, 2, 3, 3]])
Chciałbym sformatować indeks na format daty (dni mogą być f irst miesiąca).
Próbowałem następujące:
bgs.index = pd.to_datetime(bgs.index)
i
bgs.index = pd.DatetimeIndex(bgs.index)
Zarówno niepowodzeniem. Czy ktoś wie, jak mogę to zrobić?
Otrzymuję błąd, jeśli używam tego kodu bezpośrednio z Pandami 0.13. Przerywa on wywołanie 'pd.to_datetime', twierdząc, że użycie'% p' jest niepoprawne poprzez 'KeyError: 'p'' w' /pandas/tslib.so w pandas.tslib.array_strptime (pandy/tslib.c : 20989) '. – ely
W rzeczywistości mogę odtworzyć błąd pandy z dowolnym ciągiem wymagającym przeanalizowania "am" lub "pm". Musi istnieć błąd w obsłudze tego, jak zostanie przekazany do 'strftime' lub cokolwiek innego. – ely
Otworzył [tutaj problem pand] (https://github.com/pydata/pandas/issues/7381). – ely