Pandas合并给出错误"缓冲区维数错误(预期1,得2)"

lat*_*s64 30 python dataframe data-structures pandas

我正在尝试做一个pandas merge并在我尝试运行时从标题中获得上述错误.我使用3列匹配,而在我仅在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"])
Run Code Online (Sandbox Code Playgroud)

两个数据帧的列

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'],dtype ='object')

C:

索引([u'term_ps_id',u'term_school_id',u'term_portion',u'term_start_date',u'term_end_date',u'term_abbreviation',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',你的chool_asst_principal_email'],dtype ='object')

是否可以像这样合并三列?这里的合并电话有什么问题吗?

JD *_*ong 37

正如评论中所提到的,你有一个重叠列:

在此输入图像描述

  • @Rocketq你的建议应该包含在答案中,因为这是解决问题的实际方法;) (3认同)

Shi*_*e_R 5

这将从数据框中删除重复的列

df = df[list(df.columns[~df.columns.duplicated()])]
Run Code Online (Sandbox Code Playgroud)