Pandas merge giving error“缓冲区维数错误(应为1,得到2)”

2024-03-29 02:13:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个熊猫合并,并得到上述错误从标题时,我试图运行它。我使用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"])

两个数据帧的列

数据框:

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

c:

Index([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', u's chool_asst_principal_email'], dtype='object')

有可能像这样合并成三列吗?这里的合并调用有什么问题吗?


Tags: nameidprincipalnumberonemailphonesection
3条回答

如评论中所述,您有一个dupe列:

enter image description here

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

df = df[list(df.columns[~df.columns.duplicated()])]

要解决重复列的问题,可以使用带smth的duplicated删除重复列。比如:

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

或者向其中一个数据帧添加额外的字符,例如: c.columns=[c.columns[i]+str(i) for i in range(len(c.columns))]

请记住,在这种情况下,必须调整合并部分

相关问题 更多 >