2017-05-16 7 views
1

DATAFRAME 1(commitsパンダ:インナー戻り私は内側に試みない行

CommitID | COMMITTER 
------------------------ 
    1  | A   
    2  | B   
    3  | B   

DATAFRAME 2(files

CommitID | MOD 
------------------------ 
    1  | 0   
    2  | 1   
    3  | 7  

に参加していないがdf.mergeと、これらのデータフレームを結合:

files.merge(right=commits, how='inner',left_on="CommitID", right_on="CommitID")

しかし、それはrではありません列名は同じですが、すべての行が返されます。

+0

あなたはこれを試したことがありますか? - 'left_index = True、right_index = True' ... CommitIDが両方のdfsのインデックスであると仮定します。 –

答えて

1

CommitIDdtypesに問題があります。

によってそれらを確認し必要があります。

print (files['CommitID'].dtypes) 
print (commits['CommitID'].dtypes) 

そして同じにastypeによって変換:

#change only object 
files['CommitID'] = files['CommitID'].astype(int) 
commits['CommitID'] = commits['CommitID'].astype(int) 

#change only int 
files['CommitID'] = files['CommitID'].astype(str) 
commits['CommitID'] = commits['CommitID'].astype(str) 

Yurコード簡素化することができます - デフォルトhow='innerを省略してのみonを使用:

df = files.merge(right=commits, on="CommitID") 
print (df) 
    CommitID MOD COMMITTER 
0   1 0   A 
1   2 1   B 
2   3 7   B 

た場合、または両方DataFramesで唯一の同じ結合列:

df = files.merge(right=commits) 
print (df) 
    CommitID MOD COMMITTER 
0   1 0   A 
1   2 1   B 
2   3 7   B 
関連する問題