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

时间:2014-11-21 15:46:00

标签: python pandas dataframe data-structures

我正在尝试进行pandas合并,并在尝试运行时从标题中获取上述错误。我正在使用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"])

两个数据帧的列

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',你'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',你的学校   _phone',u'school_fax',u'school_principal',u'school_principal_phone',你的学校   _principal_email',u'school_asst_principal',u'school_asst_principal_phone',你的chool_asst_principal_email'],   DTYPE = '对象')

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

4 个答案:

答案 0 :(得分:37)

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

enter image description here

答案 1 :(得分:2)

这将从Dataframe中删除重复的列

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

答案 2 :(得分:1)

要解决欺骗列的问题,您可以使用带有smth的duplicated删除欺骗列。像:

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

或使用例如以下任一DataFrames添加额外的char: c.columns=[c.columns[i]+str(i) for i in range(len(c.columns))]

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

答案 3 :(得分:0)

如果没有重复的列,则:

升级您的pandas,并确保其版本高于1.1.0。 在旧版本的熊猫中传播价值存在一些问题。我遇到了同样的问题,但在google colab中效果很好,这就是我发现较旧版本存在问题的原因,因为colab始终使用任何库的最新版本。

要升级熊猫,请使用:

pip install --upgrade pandas