2014-11-21 45 views
21

我試圖做一個熊貓合併,並從標題獲得上述錯誤,當我嘗試運行它。我使用3列進行匹配,而在我僅在2列進行類似合併之前,它工作正常。熊貓合併給出錯誤「緩衝區有錯誤的維數(預期1,得到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"]) 

列兩個dataframes

DF:

性指數(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 '],D型細胞=' 對象「)

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的chool_asst_principal_email '], D類=' 對象')

是否有可能在三列這樣的合併嗎?這裏的合併電話有什麼問題嗎?在評論中提到

+5

您似乎在''''datafr中有兩個相同的列「term_school_id」 ame ...刪除一個或重命名以避免重複的名稱。 – Primer 2014-11-21 16:24:09

回答

28

正如,你有一個傻瓜柱:

enter image description here

+0

如何刪除重複的列..? – user1017373 2016-04-05 11:10:57

+1

@ user1017373把它放在索引中) – Rocketq 2016-06-10 09:57:16

+3

@Rocketq你的建議應該包含在答案中,因爲它是解決問題的實際方法;) – braunmagrin 2017-01-27 19:24:36

0

要ADRESS的重複數據刪除列的問題,您可以使用拖放與duplicated的未便受騙人列。像:

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

或增加一個額外的char或者使用例如DataFrames之一: c.columns=[c.columns[i]+str(i) for i in range(len(c.columns))]

請記住,在這種情況下,你必須調整合並部分

0

這將刪除Dataframe中的重複列

df = df[list(df.columns[~df.columns.duplicated()])] 
相關問題