2017-03-23 21 views
6

Tôi đang cố gắng ghép hai DataFrames và nhận được lỗi 'TypeError: cannot concatenate a non-NDFrame object'. Tôi đã nhìn xung quanh, có rất nhiều người bị lỗi này, hầu hết thời gian khi họ cố gắng làm điều gì đó khác với mã của họ thực sự, (vì vậy câu trả lời giải quyết các câu hỏi cụ thể nhưng không liên quan của họ)Pandas: đối tượng NDFrame là gì (và đối tượng không phải NDFrame) là gì

câu hỏi không phải là để giải quyết vấn đề cụ thể của tôi, nhưng để hiểu được lỗi ... Đối tượng không phải NDFrame là gì? Tại sao nó không thể được nối?

Ngoài ra, tại sao điều này về NDFrames (đó là những gì, và ở đâu để tôi sử dụng chúng? Có phải tất cả DataFrames NDFrames? Có bất kỳ NDFrames mà không phải là DataFrames?) ...

tôi sẽ hiểu nếu nó nói 'TypeError: cannot concatenate a non-DataFrame object' (mặc dù tôi không chắc chắn nếu họ không được DataFrames là nguyên nhân gây ra lỗi của tôi) Đây là chủ yếu tò mò của tôi questing, tôi không cố gắng để săn bất kỳ lỗi cụ thể ...

+3

nó có thể có nghĩa là bạn đang cố gắng ghép nối một loạt các 'Series', một NDFrame có nghĩa là N-chiều vì vậy ít nhất 2-D một loạt là 1-D, vấn đề ở đây là bạn đang cố gắng để nối và căn chỉnh tên chỉ mục và cột. Một chuỗi có chỉ mục nhưng không có tên cột (có thuộc tính tên nhưng điều này không giống nhau), nó có thể được thực hiện để hoạt động nhưng triển khai không hỗ trợ số này – EdChum

+2

Hoặc bạn đang truyền một thứ có loại không phải là ND -Frame, ví dụ một mảng numpy, thực sự nối một danh sách các chuỗi gấu trúc sẽ hoạt động. Bạn sẽ cần phải đăng dữ liệu thô và mã để chứng minh những gì bạn đang cố gắng – EdChum

+0

* tôi xấu hổ * Tôi đã sửa mã và bây giờ dường như không thể tái tạo lỗi của tôi, vì vậy nó cũng có thể là những gì bạn viết ... không phải về lỗi của tôi, thay vì đối tượng NDFrame là gì ... Có vẻ như không có câu hỏi nào về nó, trong stackoverflow. Dường như với tôi rằng DataFrame là một NDFrame (?) Googling tôi nhận được rằng "pandas.core.generic.NDFrame là một tương tự N-chiều của DataFrame lưu trữ đa chiều trong một cấu trúc dữ liệu có thể thay đổi kích thước, có nhãn", nhưng muốn có một lời giải thích rõ ràng hơn về những gì nó làm, những gì nó không, và mối quan hệ của nó với DataFrame ... – ntg

Trả lời

9

From the horse's mouth:

Tương tự N-chiều của DataFrame. Lưu trữ đa chiều trong một cấu trúc dữ liệu được dán nhãn size-mutable

Then what's a DataFrame?

lớp DataFrame (NDFrame): Hai chiều kích thước có thể thay đổi, dữ liệu bảng có khả năng không đồng nhất cấu trúc với trục nhãn (hàng và cột). Các phép toán số học căn chỉnh trên cả nhãn hàng và cột. Có thể được coi như một thùng chứa dict giống như đối tượng Series.

Như bạn có thể thấy, một DataFrame là một phân lớp (ví dụ: trường hợp đặc biệt) của NDFrame. Trong các chương trình Pandas nói chung, DataFrame được sử dụng rất nhiều và NDFrame được sử dụng hiếm khi. Trong thực tế, Pandas có Series cho 1D, DataFrame cho 2D, và đối với hầu hết mọi người đó là kết thúc, mặc dù một nửa của Pandas 'tên là PanelPandas also has, nhưng hầu hết mọi người không sử dụng.

Có/thậm chí là một điều 4D trong gấu trúc, nhưng thực sự không ai sử dụng nó (đây là internet, một người nào đó bây giờ sẽ xuất hiện để nói rằng họ làm!). Đối với kích thước cao hơn hai hoặc có thể ba, một số người đã chuyển nỗ lực của họ sang xarray. Đó có lẽ là nơi mà nếu tham vọng của bạn không thể chứa trong 2D.

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