我正在嘗試使用兩列加入兩個熊貓數(shù)據(jù)框:new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')但出現(xiàn)以下錯誤:pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)()pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)()pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)()pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)()KeyError: '[B_1, c2]'任何想法應(yīng)該是正確的方法嗎?謝謝!
3 回答

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊
這里的問題是,通過使用撇號,您可以將要傳遞的值設(shè)置為字符串,而實際上,正如文檔中的@Shijo所述,該函數(shù)需要的是標(biāo)簽或列表,而不是字符串!如果列表包含為左和右數(shù)據(jù)幀傳遞的列的每個名稱,則每個列名稱必須分別在撇號內(nèi)。根據(jù)上述內(nèi)容,我們可以理解為什么這是不正確的:
new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
這是使用函數(shù)的正確方法:
new_df = pd.merge(A_df, B_df, how='left', left_on=['A_c1','c2'], right_on = ['B_c1','c2'])

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
另一種方法是: new_df = A_df.merge(B_df, left_on=['A_c1','c2'], right_on = ['B_c1','c2'], how='left')
添加回答
舉報
0/150
提交
取消