[英]Pandas: Inner Join returns no rows
DataFrame 1( commits
)
CommitID | COMMITTER
------------------------
1 | A
2 | B
3 | B
DataFrame 2( files
)
CommitID | MOD
------------------------
1 | 0
2 | 1
3 | 7
我試圖用df.merge
將這些DataFrame內部連接:
files.merge(right=commits, how='inner',left_on="CommitID", right_on="CommitID")
但是,盡管列名相同,但它不返回任何行。
列CommitID
不同dtypes
存在問題。
需要通過以下方式檢查它們:
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)
您的代碼可以簡化-省略默認的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.