Панды: Inner Join не возвращает строк

1

DataFrame 1 (commits)

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

DataFrame 2 (files)

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

Я попытался объединить эти DataFrames с помощью df.merge:

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

Но он не возвращает никаких строк, хотя имя столбца идентично.

  • 0
    Вы пробовали это? - left_index=True, right_index=True ... Предполагая, что CommitID является индексом в обеих dfs.
Теги:
pandas
dataframe

1 ответ

1
Лучший ответ

Проблема отличается от dtypes столбца CommitID.

Нужно проверить их:

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)

Юрский код может быть упрощен - пропустите default 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню