簡體   English   中英

Pandas 合並給出錯誤“緩沖區的維數錯誤(預期 1,得到 2)”

[英]Pandas merge giving error "Buffer has wrong number of dimensions (expected 1, got 2)"

我正在嘗試進行 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:

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

是否可以像這樣合並三列? 這里的合並調用有什么問題嗎?

正如評論中提到的,你有一個欺騙列:

在此處輸入圖片說明

要解決dupe 列的問題,您可以使用duplicated with smth 刪除dupe 列。 喜歡:

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

或使用例如: c.columns=[c.columns[i]+str(i) for i in range(len(c.columns))]

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

這將從數據框中刪除重復的列

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

如果沒有重復的列,則:

升級您的pandas並確保它的版本高於1.1.0 在舊版本的熊貓中廣播值存在一些問題。 我遇到了同樣的問題,但它在 google colab 中運行良好,這就是我發現舊版本存在問題的原因,因為 colab 總是使用任何庫的最新版本。

要升級熊貓使用:

pip install --upgrade pandas

我遇到過類似的問題,雖然這個問題很老但可能會對某人有所幫助。 我們有一個使用 python 庫 0.25 的 python 代碼,它工作正常但是當代碼導入到帶有 python 庫 1.3.2 的 pod 時,它開始拋出以下錯誤:-

ERROR - Error in line 34 ValueError Buffer has wrong number of dimensions (expected 1, got 2)\nTraceback (most recent call last)

將版本降級到 0.25 可以解決問題,或者升級代碼可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM