將資料表與自身合併

使用 pandas 進行資料表連接

Aaren Stubberfield

Instructor

續集電影資料

print(sequel.head())
  id     title        sequel
0 19995  Avatar       NaN
1 862    Toy Story    863
2 863    Toy Story 2  10193
3 597    Titanic      NaN
4 24428  The Avengers NaN

Toy Story 與續集 Toy Story 2 的圖片

使用 pandas 進行資料表連接

將資料表與自身合併

兩份相同資料表合併的示意圖

使用 pandas 進行資料表連接

將資料表與自身合併

original_sequels = sequels.merge(sequels, left_on='sequel', right_on='id', 
                                 suffixes=('_org','_seq'))
print(original_sequels.head())
  id_org  title_org        sequel_org  id_seq  title_seq        sequel_seq
0 862     Toy Story        863         863     Toy Story 2      10193     
1 863     Toy Story 2      10193       10193   Toy Story 3      NaN       
2 675     Harry Potter...  767         767     Harry Potter...  NaN       
3 121     The Lord of ...  122         122     The Lord of ...  NaN       
4 120     The Lord of ...  121         121     The Lord of ...  122
使用 pandas 進行資料表連接

繼續整理結果格式

print(original_sequels[,['title_org','title_seq']].head())
  title_org        title_seq      
0 Toy Story        Toy Story 2    
1 Toy Story 2      Toy Story 3    
2 Harry Potter...  Harry Potter...
3 The Lord of ...  The Lord of ...
4 The Lord of ...  The Lord of ...
使用 pandas 進行資料表連接

以 left join 將資料表與自身合併

original_sequels = sequels.merge(sequels, left_on='sequel', right_on='id', 
                                 how='left', suffixes=('_org','_seq'))
print(original_sequels.head())
  id_org  title_org     sequel_org  id_seq  title_seq    sequel_seq
0 19995   Avatar        NaN         NaN     NaN          NaN       
1 862     Toy Story     863         863     Toy Story 2  10193     
2 863     Toy Story 2   10193       10193   Toy Story 3  NaN       
3 597     Titanic       NaN         NaN     NaN          NaN       
4 24428   The Avengers  NaN         NaN     NaN          NaN
使用 pandas 進行資料表連接

何時將資料表與自身合併

常見情境:

  • 階層關係
  • 序列關係
  • 圖形資料
使用 pandas 進行資料表連接

一起來練習吧!

使用 pandas 進行資料表連接

Preparing Video For Download...