2014-11-21 19 views
21

Tôi đang cố gắng để làm một con gấu sáp nhập và nhận được lỗi trên từ tiêu đề khi tôi cố gắng chạy nó. Tôi đang sử dụng 3 cột để phù hợp trên trong khi ngay trước khi tôi làm tương tự hợp nhất trên chỉ có 2 cột và nó hoạt động tốt.Pandas hợp nhất cho lỗi "Buffer có sai số kích thước (dự kiến ​​1, có 2)"

df = pd.merge(df, c, how="left", 
     left_on=["section_term_ps_id", "section_school_id", "state"], 
     right_on=["term_ps_id", "term_school_id", "state"]) 

cột cho hai dataframes

df:

Index ([u'section_ps_id 'u'section_school_id', u'section_course_number 'u'secti on_term_ps_id', u 'section_staff_ps_id', u'section_number ', u'section_expression' , u'section_grade_level ', u'state', u'sections_id ', u'course_ps_id', u'course_sc hool_id ', u'course_number', u'course_schd_dept ', u'courses_id', u'school_ps_id ', u'course_school_id ', u'school_name', u'school_abbr ', u'school_low_grade', u'sch ool_high_grade ', u'school_alt_school_number', u'school_state ', u'school_phone', u'school_fax ', u 'school_principal', u'school_principal_phone 'u'school_principa l_email', u'school_asst_principal 'u'school_asst_principal_phone', u'school_ass t_principal_email '], dtype =' đối tượng ')

c:

Chỉ mục ([u'term_ps_id ', u'term_school_id', u'term_portion ', u'term_start_date', u 'term_end_date', u'term_abbreviatio n ', u'term_name', u'state ', u'terms_id', u'sch ool_ps_id ', u'term_school_id', u'school_name ', u'school_abbr', u'school_low_grad e ', u' school_high_grade ', u'school_alt_school_number', u'school_state ', u'school _phone', u'school_fax ', u'school_principal', u'school_principal_phone ', u'school _principal_email', u'school_asst_principal ', u' school_asst_principal_phone 'u của chool_asst_principal_email '], dtype =' đối tượng')

có thể sáp nhập vào ba cột như thế này? Có gì sai trong cuộc gọi hợp nhất ở đây không?

+5

Bạn dường như có hai cột giống nhau '" term_school_id "' trong bạn 'c' datafr ame ... Xóa một hoặc đổi tên để tránh trùng lặp tên. – Primer

Trả lời

28

Như đã đề cập trong các ý kiến, bạn có một cột dupe:

enter image description here

+0

Làm thế nào để loại bỏ cột trùng lặp ..? – user1017373

+1

@ user1017373 thả nó theo chỉ mục) – Rocketq

+3

@Rocketq đề xuất của bạn nên được bao gồm trong câu trả lời, vì đó là cách thực tế để khắc phục sự cố;) – braunmagrin

0

Để địa chỉ các vấn đề của các cột dupe bạn có thể thả các cột dupe sử dụng duplicated với smth. như:

c = c[~c.columns.duplicated(keep='first')] 

hoặc thêm một char bổ sung hoặc một trong những DataFrames sử dụng ví dụ: c.columns=[c.columns[i]+str(i) for i in range(len(c.columns))]

Hãy ghi nhớ rằng trong trường hợp này bạn phải điều chỉnh phần sáp nhập

0

này sẽ loại bỏ các cột được sao chép từ Dataframe

df = df[list(df.columns[~df.columns.duplicated()])] 
Các vấn đề liên quan