Hãy xem xét một tập tin đầu vào, b.dat
:Pandas - chuyển đổi dataframe đa-index để đối tượng 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
Tôi có thể nhóm tổng số hàng tháng như sau:
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()
Chỉ số trong những tổng số nhóm lại trông giống như :
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]])
Tôi muốn định dạng lại chỉ mục thành định dạng ngày giờ (ngày có thể là f đầu tháng).
Tôi đã thử những điều sau đây:
bgs.index = pd.to_datetime(bgs.index)
và
bgs.index = pd.DatetimeIndex(bgs.index)
Cả hai thất bại. Có ai biết làm thế nào tôi có thể làm điều này?
Tôi gặp lỗi nếu tôi sử dụng mã này trực tiếp với Pandas 0,13. Nó phá vỡ trong cuộc gọi 'pd.to_datetime', tuyên bố rằng việc sử dụng'% p' không chính xác thông qua 'KeyError: 'p'' trong' /pandas/tslib.so trong pandas.tslib.array_strptime (pandas/tslib.c : 20989) '. – ely
Thực tế, tôi có thể tạo lại lỗi gấu trúc bằng bất kỳ chuỗi nào cần phân tích cú pháp 'am' hoặc 'pm'. Phải có một lỗi trong việc xử lý cách mà nó được chuyển tới 'strftime' hoặc bất cứ thứ gì. – ely
Đã mở [pandas issue here] (https://github.com/pydata/pandas/issues/7381). – ely