关于如果用pandas
库来实现数据集之间合并的文章其实说少也不算少,不过小编总是感觉它们写的算不上完善,所以今天打算来整理与总结一下,本文大概的结构是
concat()
方法的简单介绍append()
方法的简单介绍merge()
方法的简单介绍join()
方法的简单介绍多重行索引的合并介绍
表格合并之后的列名重命名
combine()
方法的简单介绍combine_first()
方法的简单介绍
Concat()
方法的简单介绍
在我们开始concat()
方法的正是介绍之前,我们先来看一下简单的例子
df1 = pd.DataFrame(
{
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"],
"C": ["C0", "C1", "C2", "C3"],
"D": ["D0", "D1", "D2", "D3"],
},
index=[0, 1, 2, 3],
)
df2 = pd.DataFrame(
{
"A": ["A4", "A5", "A6", "A7"],
"B": ["B4", "B5", "B6", "B7"],
"C": ["C4", "C5", "C6", "C7"],
"D": ["D4", "D5", "D6", "D7"],
},
index=[4, 5, 6, 7],
)
df3 = pd.DataFrame(
{
"A": ["A8", "A9", "A10", "A11"],
"B": ["B8", "B9", "B10", "B11"],
"C": ["C8", "C9", "C10", "C11"],
"D": ["D8", "D9", "D10", "D11"],
},
index=[8, 9, 10, 11],
)
我们来看一下使用concat()
方法之后的效果
frames = [df1, df2, df3]
result = pd.concat(frames)
result
output
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7
8 A8 B8 C8 D8
9 A9 B9 C9 D9
10 A10 B10 C10 D10
11 A11 B11 C11 D11
大致合并的方向就是按照轴垂直的方向来进行合并,如下图
下面小编来详细介绍一下concat()
方法中的各个参数作用
pd.concat(
objs,
axis=0,
join="outer",
ignore_index=False,
keys=None,
levels=None,
names=None,
verify_integrity=False,
copy=True,
)
objs:需要用来进行合并的数据集,可以是Series类型或者是DataFrame类型的数据
axis:可以理解为是合并的方向,默认是0
join:可以理解为是合并的方式,有并集或是交集两种方式,默认的是并集
ignore_index:忽略索引,默认是
False
keys:用于做行方向的多重索引
大家可能会有些迷惑,什么是多重的索引呢?看下面的例子
result = pd.concat(frames, keys=["x", "y", "z"])
result
output
如此一来,我们可以通过“x”、“y”以及“z”这些元素来获取每一部分的数据,例如
result.log["x"]
output
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
除此之外,keys
参数还能够被用在列索引上
s3 = pd.Series([0, 1, 2, 3], name="foo")
s4 = pd.Series([0, 1, 2,