2011-10-15 47 views
25

Khi tôi cố gắng hợp nhất hai dataframes bởi hàng thực hiện:thêm hai khung dữ liệu với gấu trúc

bigdata = data1.append(data2) 

tôi nhận được lỗi sau:

Exception: Index cannot contain duplicate values! 

Chỉ số của khung dữ liệu đầu tiên bắt đầu từ 0 đến 38 và thứ hai từ 0 đến 48. Tôi không hiểu rằng tôi phải sửa đổi chỉ mục của một trong các khung dữ liệu trước khi hợp nhất, nhưng tôi không biết làm thế nào để.

Cảm ơn bạn.

Đây là hai dataframes:

data1:

meta particle ratio area type  
0 2  part10 1.348 0.8365 touching 
1 2  part18 1.558 0.8244 single 
2 2  part2  1.893 0.894 single 
3 2  part37 0.6695 1.005 single 
....clip... 
36 2  part23 1.051 0.8781 single 
37 2  part3  80.54 0.9714 nuclei 
38 2  part34 1.071 0.9337 single 

data2:

meta particle ratio area type  
0 3  part10 0.4756 1.025 single 
1 3  part18 0.04387 1.232 dusts 
2 3  part2  1.132 0.8927 single 
...clip... 
46 3  part46 13.71 1.001 nuclei 
47 3  part3  0.7439 0.9038 single 
48 3  part34 0.4349 0.9956 single 

cột đầu tiên là chỉ số

+0

Bạn có thể vui lòng đăng ảnh chụp của cả hai đối tượng 'dataframe' (tức là trong trình thông dịch python, nhập tên' dataframe' để các đối tượng được liệt kê trên màn hình). Đồng thời đăng những từ khóa bạn đã sử dụng khi bạn thực hiện hợp nhất. Như bạn có thể thấy http://pandas.sourceforge.net/dataframe.html, có một vài cách để kết hợp các khung dữ liệu ... đảm bảo bạn đang sử dụng một cách phù hợp nhất với những gì bạn đang cố gắng hoàn thành –

+0

đây là bản in của hai khung dữ liệu: –

+0

Tôi xin lỗi, nhưng tôi vẫn không thấy nội dung của 'data1' và' data2' trong trang web này ... vui lòng chỉnh sửa chúng thành câu hỏi gốc –

Trả lời

40

Chức năng append có một cuộc tranh cãi bắt buộc ignore_index mà bạn nên sử dụng ở đây để tham gia các hồ sơ với nhau, vì chỉ mục này không có ý nghĩa đối với ứng dụng của bạn.

+0

Cảm ơn bạn, tôi sẽ thử nó –

+0

@ Jean-Pat: tại sao không chấp nhận câu trả lời? –

1

Trước tiên bạn có thể xác định hàng được lập chỉ mục (không có giá trị) bằng phương pháp groupby và sau đó thực hiện phép tính tổng/có nghĩa trên tất cả các hàng có chỉ mục trùng lặp.

data1 = data1.groupby(data1.index).sum() 
data2 = data2.groupby(data2.index).sum() 
+0

Tôi đã có bản dupes với panel = panel1.append (panel2). Và sau đó điều này loại bỏ chúng: panel = panel.groupby (panel.index) .sum() Vì vậy, thx. (Tôi nói rằng tôi đang làm việc với các bảng chứ không phải các khung dữ liệu, cách biết) – gseattle

Các vấn đề liên quan