2017-05-16 3 views
1

Datenrahmen 1 (commits)Pandas: Inner keine Zeilen Join kehrt

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

Datenrahmen 2 (files)

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

ich innere versuchte verbinden diese Datenrahmen mit df.merge:

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

Aber es ist nicht r Zeilen umkehren, obwohl der Spaltenname identisch ist.

+0

Sie dies versucht haben? - 'left_index = True, right_index = True' ... Angenommen, CommitID ist der Index in beiden dfs. –

Antwort

1

Es gibt ein anderes Problem dtypes der Spalte CommitID.

Benötigen sie überprüfen, indem Sie:

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

Und dann von astype zu gleichen konvertieren:

#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 Code kann sein vereinfachen - weglassen Standard how='inner und verwenden nur 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 

Oder wenn nur gleiche verknüpften Spalten in beiden DataFrames:

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