pandas筆記(9) 多表連線

2021-10-09 11:14:07 字數 4561 閱讀 5441

python中使用merge()方法來實現多表的橫向連線,根據引數how的值,可以進行類似sql中的左右內外的連線方式。

import pandas as pd 

df1 = pd.dataframe(

)df2 = pd.dataframe(

)df3 = pd.dataframe(

)print

(df1)

print

(df2)

print

(df3)

# 返回

id 姓名

00 a

11 b

22 c

33 d

44 e

id 成績00

951184

22663

38544

71id 成績01

951184

22633

36843

875375

64687

49780

58

pd.merge(df1,df2)

# 返回

id 姓名 成績

00 a 95

11 b 84

22 c 66

33 d 85

44 e 71

pd.merge(df1,df3)

# 返回

id 姓名 成績

00 a 58

11 b 95

21 b 84

32 c 63

43 d 68

53 d 87

63 d 75

74 e 68

84 e 97

pd.merge(df1,df2,on=

'id'

)# 返回

id 姓名 成績

00 a 95

11 b 84

22 c 66

33 d 85

44 e 71

# 將df1中列索引id的名字改為學號,然後與df2進行連線

df1.rename(columns=

,inplace=

true

)pd.merge(df1,df2,left_on=

'學號'

,right_on=

'id'

)# 返回

學號 姓名 id 成績

00 a 0951

1 b 1842

2 c 2663

3 d 3854

4 e 4

71

pd.merge(df1,df2,left_index=

true

,right_index=

true

)# 返回

學號 姓名 id 成績

00 a 0951

1 b 1842

2 c 2663

3 d 3854

4 e 4

71

pd.merge(df1,df2,left_on=

'學號'

,right_index=

true

)# 返回

學號姓名 id 成績

00 a 0951

1 b 1842

2 c 2663

3 d 3854

4 e 4

71

pd.merge(df2,df3,on=

'id'

)# 返回

id 成績_x 成績_y00

955811

849521

848432

666343

856853

858763

857574

716884

7197

也可以自行修改重複列名

pd.merge(df2,df3,on=

'id'

,suffixes=

['_left'

,'_right'])

# 返回

id 成績_left 成績_right00

955811

849521

848432

666343

856853

858763

857574

716884

7197

python中使用concat()方法來實現多表的縱向連線。調整引數axis,也可以實現表的橫向連線。在連線中,按相同行/列索引名進行連線。

concat(objs, axis=0, join=『outer』, ignore_index: bool = false, keys=none, levels=none, names=none, verify_integrity: bool = false, sort: bool = false, copy: bool = true)

df3 = pd.dataframe(

)df4 = pd.dataframe(

)df5 = pd.dataframe(

)df6 = pd.dataframe([[

8,18]

,[9,

17]],index=[1

,2],columns=

['id'

,'age'])

print

(df3)

print

(df4)

print

(df5)

print

(df6)

# 返回

id name age

01 張三 18

12 李四 19

id name age

03 王五 20

14 趙六 17

id age05

191617

2718id age18

182917

pd.concat(

[df3,df4]

)# 返回

id name age

01 張三 18

12 李四 19

03 王五 20

14 趙六 17

pd.concat(

[df3,df4]

,ignore_index=

true

)# 返回

id name age

01 張三 18

12 李四 19

23 王五 20

34 趙六 17

pd.concat(

[df3,df4]

,keys=

['表3'

,'表4'])

# 返回

id name age表30

1 張三 18

12 李四 19表40

3 王五 20

14 趙六 17

pd.concat(

[df3,df4]

,keys=

['表3'

,'表4'

],names=

['分級1'

,'分級2'])

# 返回

id name age

分級1 分級2 表30

1 張三 18

12 李四 19表40

3 王五 20

14 趙六 17

pd.concat(

[df4,df5]

)# 返回

id name age

03 王五 20

14 趙六 17

05 nan 19

16 nan 17

27 nan 18

內連線方式時,兩個dataframe列不一致,只保留公共列

pd.concat(

[df4,df5]

,join=

"inner"

)# 返回

id age03

201417

05191

61727

18

pd.concat(

[df3,df4]

,axis=1)

# 返回

id name age id name age

01 張三 18

3 王五 20

12 李四 19

4 趙六 17

pd.concat(

[df3,df4]

,verify_integrity=

true

)# 返回[0

,1], dtype=

'int64'

)

pandas入門 多表操作

import pandas as pd import numpy dictionary1 df1 pd.dataframe data dictionary1,index 0,1,2,3 dictionary2 df2 pd.dataframe data dictionary2,index 4,5,6...

Day9 MySQL 多表之間的連線

約束型別 primary key 主鍵約束 表示id不可以重複,通過id來確定唯一的一條記錄 唯一標識資料表中的行 記錄 非空 表示這個列的值不能為空 自增 表示插入記錄的時候不需要手動插入,會自動增長 注意 1 n的關係 就把1放入多的一方。例如 班級和學生是1 n的關係,就在學生表中加入team...

Mysql筆記(四)多表連線查詢

資料庫的建立參考我的另一篇部落格 多表連線查詢 交叉連線 交叉連線又叫笛卡爾積,它是指不使用任何條件,直接將乙個表的所有記錄和另乙個表中的所有記錄一一匹配。取兩個表並集。內連線則是只有條件的交叉連線,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出現在結果集中,即內連線只連線匹配的行。取兩個...