panads多表聯合查詢

2021-09-11 00:02:59 字數 1555 閱讀 5453

有這樣乙個資料集:

兩張錶用id關聯著

一、通過id聯合查詢

import pandas as pd

students = pd.read_excel("c:/users/administrator/desktop/student_score.xlsx",sheet_name="students")

scores = pd.read_excel("c:/users/administrator/desktop/student_score.xlsx",sheet_name='scores')

data = pd.merge(students,scores)

print(data)

結果:

說明:1.merge如果不指定基於哪個字段,會自動在列中查詢相同的字段進行匹配

2.如果在讀取時,設定了index_col,要在merge中設定on='id',或者用left_on 和right_on

3.如果在讀取時,設定了index_col,用join可直接聯立查詢,不需設定on

data = students.join(scores,how='left').fillna(0)

data.score = data.score.astype(int)

print(data)

merge引數:dataframe.merge(right, how='inner', on=none, left_on=none, right_on=none, left_index=false, right_index=false, sort=false, suffixes=('_x', '_y'), copy=true, indicator=false, validate=none)

主要常用引數介紹:

* left,right:表示想要進行合併的dataframe

* how,值可以是inner,left,right,outer,mysql的sql查詢操作,預設值是inner

* left_on,right_on是用來指定希望用來作用合併依據的列名,如果不指定的話會自動尋找列名相同的列進行合併

* left_index,right_index設定為true的話表示使用該df的列索引作為合併的根據進行合併

* sort預設為false,設定為true時表示合併時會根據給定的列值(也就是前面的left_on這種指定的列的值)來進行排序後再輸出

* suffixes是用來給重名的列增加字尾名的,可以使用預設值也可以自己修改,比如要合併df1和df2都有乙個列的名字是data,那麼合併後left的df的data列名變為了data_x

多表聯合查詢

inner jion 和for all entries 當表比較多或者表之間的關係不能用for all entries時,我們就可以考慮使用inner jion來實現多表聯合查詢 eg select vbak vbeln vbak objnr guebg 開始日期 gueen 結束日期 kunnr ...

多表聯合查詢

inner jion 和for all entries 當表比較多或者表之間的關係不能用for all entries時,我們就可以考慮使用inner jion來實現多表聯合查詢 eg select vbak vbeln vbak objnr guebg 開始日期 gueen 結束日期 kunnr ...

多表聯合查詢

背景 顯示購物訂單。訂單中包含商品的屬性和購物者的部分屬性。使用 傳統方式 vo 運用 多表sql查詢 entity實體類 public class order catch sqlexception e 注 傳參 ordervo 呼叫queryrunner query 方法進行查詢 sql語句的編寫...