熱線電話:13121318867

登錄
首頁大數據時代數據分析師教程《Python數據分析極簡入門》第2節 6 Pandas合并連接
數據分析師教程《Python數據分析極簡入門》第2節 6 Pandas合并連接
2024-11-24
收藏

《Python數據分析極簡入門》

第2節 6 Pandas合并連接

pandas中,有多種方法可以合并和拼接數據。常見的方法包括append()、concat()、merge()。

追加(Append)

append()函數用于將一個DataFrameSeries對象追加到另一個DataFrame中。

import pandas as pd
df1 = pd.DataFrame({'A': ['a''b'],
                   'B': [12]})
df1
A B
0 a 1
1 b 2
df2 = pd.DataFrame({'A': [ 'b''c','d'],
                    'B': [234]})
df2
A B
0 b 2
1 c 3
2 d 4
df1.append(df2,ignore_index=True
A B
0 a 1
1 b 2
2 b 2
3 c 3
4 d 4

合并(Concat)

concat()函數用于沿指定軸將多個對象(比如Series、DataFrame)堆疊在一起??梢匝匦谢蛄蟹较蜻M行拼接。 先看一個上下堆疊的例子

df1 = pd.DataFrame({'A': ['a''b'],
                   'B': [12]})
df1
A B
0 a 1
1 b 2
df2 = pd.DataFrame({'A': [ 'b''c','d'],
                    'B': [234]})
df2
A B
0 b 2
1 c 3
2 d 4
pd.concat([df1,df2],axis =0# 上下拼接
A B
0 a 1
1 b 2
0 b 2
1 c 3
2 d 4

再看一個左右堆疊的例子

df1 = pd.DataFrame({'A': ['a''b']})
df1
A
0 a
1 b
df2 = pd.DataFrame({'B': [12],
                    'C': [24]})
df2
B C
0 1 2
1 2 4
pd.concat([df1,df2],axis =1# 左右拼接
A B C
0 a 1 2
1 b 2 4

連接(Merge)

merge()函數用于根據一個或多個鍵將兩個DataFrame的行連接起來。類似于SQL中的JOIN操作。

數據連接 1 (pd.merge)

先看一下 innerouter連接

df1 = pd.DataFrame({'A': ['a''b''c'],
                   'B': [123]})
df1
A B
0 a 1
1 b 2
2 c 3
df2 = pd.DataFrame({'A': [ 'b''c','d'],
                    'B': [234]})
df2
A B
0 b 2
1 c 3
2 d 4
pd.merge(df1,df2,how = 'inner')
A B
0 b 2
1 c 3
pd.merge(df1,df2,how = 'outer')
A B
0 a 1
1 b 2
2 c 3
3 d 4

數據連接 2 (pd.merge)

再看左右鏈接的例子:

df1 = pd.DataFrame({'A': ['a''b''c'],
                   'B': [123]})
df1
A B
0 a 1
1 b 2
2 c 3
df2 = pd.DataFrame({'A': [ 'b''c','d'],
                    'C': [234]})
df2
A C
0 b 2
1 c 3
2 d 4
pd.merge(df1,df2,how = 'left',on = "A")  # 左連接
A B C
0 a 1 NaN
1 b 2 2.0
2 c 3 3.0
pd.merge(df1,df2,how = 'right',on = "A"# 右連接
A B C
0 b 2.0 2
1 c 3.0 3
2 d NaN 4
pd.merge(df1,df2,how = 'inner',on = "A"# 內連接
A B C
0 b 2 2
1 c 3 3
pd.merge(df1,df2,how = 'outer',on = "A"# 外連接
A B C
0 a 1.0 NaN
1 b 2.0 2.0
2 c 3.0 3.0
3 d NaN 4.0

補充1個小技巧

df1[df1['A'].isin(df2['A'])] # 返回在df1中列'A'的值在df2中也存在的行
A B
1 b 2
2 c 3
df1[~df1['A'].isin(df2['A'])] # 返回在df1中列'A'的值在df2中不存在的行
A B
0 a 1

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢