2016-05-15 9 views
0

2つのデータフレームをマージしようとしています。私はJupyterのノートブックとパンダのデータフレームを使用しています。私の2つのDFSは、次のようになります。Pandas - KeyError on merge

gbdf.dtypes: 
product_name   object 
Quantity    float64 
Product_id    int64 
product_group1   int64 
product_group1_name  object 
product_group2   int64 
product_group2_name  object 
packing_unit   object 
packing_amount   int64 
dtype: object 


trns.dtypes: 
Store_id   int64 
Date    object 
Price    int64 
Net price   int64 
Purchase price  int64 
Hour    int64 
product_id   int64 
Quantity   int64 
dtype: object 

しかし、私は私が

KeyError: 'product_id' 

任意のアイデア理由を得る

gbdfprice = gbdf.merge(gbdf, trns, left_on = 'Product_id', right_on = 'product_id') 

実行しようとすると?

+2

'gbdf.merge('は第1引数として他のデータフレーム( 'trns')を期待します。あなたはマージ関数と同じデータフレームを渡しています。 – ayhan

答えて

0

右の引数だけを受け入れるDataFrameオブジェクトに関連付けられたメソッドを実際に使用していますが、使用した形式(左右のDataFrame引数を受け入れる)はパンダのトップレベルモジュールに関連付けられたメソッドです。

import pandas as pd 

left = DataFrame(...) 
right = DataFrame(...) 

#Method you have used 
combined = left.merge(right, [options...]) 
#Method you have taken argument list from 
combined = pd.merge(left, right, [options...]) 

私はソースで見ることができるものから、left.merge(right...)はちょうど他のmerge方法をインポートし、merge(self,right,...)を実行します。だから、

、@ayhanはちょうど引数リストからgbdfを削除するか、またpd.mergegbdf.mergeコールを交換し、同じ引数リストを残すことができる修正するために、指摘するように。

関連する問題