热线电话: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()函数用于沿指定轴将多个对象(比如SeriesDataFrame)堆叠在一起。可以沿行或列方向进行拼接。 先看一个上下堆叠的例子

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
最新资讯
更多
客服在线
立即咨询