Tôi có đoạn code sau,Pandas KeyError: Giá trị không ở chỉ số
df = pd.read_csv(CsvFileName)
p = df.pivot_table(index=['Hour'], columns='DOW', values='Changes', aggfunc=np.mean).round(0)
p.fillna(0, inplace=True)
p[["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]] = p[["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]].astype(int)
Nó đã luôn luôn được làm việc cho đến khi tập tin csv không có đủ bảo hiểm (của tất cả các ngày trong tuần). Đối với ví dụ, với tệp .csv sau,
DOW,Hour,Changes
4Wed,01,237
3Tue,07,2533
1Sun,01,240
3Tue,12,4407
1Sun,09,2204
1Sun,01,240
1Sun,01,241
1Sun,01,241
3Tue,11,662
4Wed,01,4
2Mon,18,4737
1Sun,15,240
2Mon,02,4
6Fri,01,1
1Sun,01,240
2Mon,19,2300
2Mon,19,2532
tôi sẽ nhận được lỗi sau:
KeyError: "['5Thu' '7Sat'] not in index"
Nó dường như có một sửa chữa rất dễ dàng, nhưng tôi chỉ là quá mới để Python để biết cách khắc phục. Hãy giúp tôi. Cảm ơn.
Đơn giản là 'p = p.astype (int)' không đủ? Thật khó để nói lý do bạn lập chỉ mục các cột như vậy, hai danh sách trông giống hệt nhau và từ dữ liệu đầu vào của bạn, có vẻ như bạn không * loại trừ * cột theo cách này. – jedwards
Thậm chí nếu bạn đặt các cột mà bạn nhìn vào (ví dụ: loại trừ '['5Thu' '7Sat']'), bạn vẫn sẽ gặp lỗi khi tạo 'np.nan' thành' int'. Bạn có thể sử dụng giá trị điền khác (đối với các mục bị thiếu) để giải quyết vấn đề này. – Alex
Cuối cùng tôi sẽ cần tất cả các ngày trong tuần trong chỉ mục (ví dụ: '5Thu' '7Sat'), bởi vì tôi sẽ vẽ chúng tiếp theo. Vì vậy, tôi đang tìm cách để thêm tất cả, mà không ảnh hưởng đến mức trung bình. – xpt