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