串联两个或多个Pandas数据帧,可以使用Pandas提供的函数concat()
、append()
或者merge()
。这三个函数都可以完成数据帧的串联功能,但应用场景不同。
下面将分别介绍concat()
、append()
和merge()
函数的使用方法及实例演示。
一、concat()函数
concat()
函数可以将两个或多个数据帧沿着指定的轴进行拼接,并返回拼接后的新数据帧。
具体语法:pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)
objs
:要进行拼接的两个或多个数据帧,可以是列表、元组或字典。axis
:指定拼接轴的方向,0表示垂直拼接,1表示水平拼接,默认为0。join
:指定连接方式,’outer’表示并集,’inner’表示交集,默认为’outer’。ignore_index
:忽略原始数据帧的行索引(如果行索引不为唯一),生成一个新的行索引,默认为False。keys
:与拼接对象形状相同的分组键,可以是任意形式的可迭代对象。levels
:分层索引中指定级别的名称。names
:创建分层索引时所使用的层级名称。verify_integrity
:检查拼接后的数据帧是否有重复的行,默认为False。sort
:根据拼接键按字典序排序数据帧。copy
:如果这个参数是真,那么即使合并之后,源也不会被更改。
下面是一个简单的实例:
import pandas as pd
df1=pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
df2=pd.DataFrame({'A':[10,11,12],'B':[13,14,15],'C':[16,17,18]})
df3=pd.DataFrame({'A':[19,20,21],'B':[22,23,24],'C':[25,26,27]})
# 垂直拼接
df_vertical=pd.concat([df1,df2,df3],axis=0,ignore_index=True)
print(df_vertical)
# 水平拼接
df_horizontal=pd.concat([df1,df2,df3],axis=1)
print(df_horizontal)
输出结果为:
A B C
0 1 4 7
1 2 5 8
2 3 6 9
3 10 13 16
4 11 14 17
5 12 15 18
6 19 22 25
7 20 23 26
8 21 24 27
A B C A B C A B C
0 1 4 7 10 13 16 19 22 25
1 2 5 8 11 14 17 20 23 26
2 3 6 9 12 15 18 21 24 27
二、append()函数
append()
函数可以在数据帧底部追加新的行数据,但如果需要拼接两个或多个数据帧,应该使用concat()
函数。
具体语法:DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)
other
:Series、DataFrame、dict或列表类型的数据,要追加到此数据帧的另一个对象。ignore_index
:如果为True
,则忽略原始数据帧的索引,不会复制它。否则,原始数据帧的索引会复制到新数据帧中。verify_integrity
:如果为True
,则检查数据帧是否存在重复的索引。默认为False
,即不检查。sort
:在执行追加操作之前是否对数据的行排序。默认为False
,即不排序。
下面是一个简单的实例:
import pandas as pd
df1=pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
df2=pd.DataFrame({'A':[10,11,12],'B':[13,14,15],'C':[16,17,18]})
df3=pd.DataFrame({'A':[19,20,21],'B':[22,23,24],'C':[25,26,27]})
# 追加新的数据帧
df_append=df1.append(df2,ignore_index=True)
df_append=df_append.append(df3,ignore_index=True)
print(df_append)
输出结果为:
A B C
0 1 4 7
1 2 5 8
2 3 6 9
3 10 13 16
4 11 14 17
5 12 15 18
6 19 22 25
7 20 23 26
8 21 24 27
三、merge()函数
merge()
函数主要用于根据两个或多个数据帧的某些共同列(或索引)进行合并。在数据库中,这被称为SQL风格的合并。
具体语法:pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, validate=None)
left
:要合并的第一个数据帧。right
:要合并的第二个数据帧。how
:连接方式,可以是’inner’、’outer’、’left’或’right’。默认为’inner’。on
:用于进行合并操作的列名。必须在两个数据帧中存在,且相同名称的列名。left_on
:左侧数据帧中用作键的列。可以是列名或列名的列表。right_on
:右侧数据帧中用作键的列。可以是列名或列名的列表。left_index
:如果为True
,则使用左侧的索引(行标签)作为连接键。默认为False
。right_index
:如果为True
,则使用右侧的索引(行标签)作为连接键。默认为False
。sort
:根据拼接键按字典序排序数据帧。suffixes
:字符串元组,表示如果列名重复,要在左侧和右侧列名后面添加的后缀。copy
:如果这个参数是真,那么即使合并之后,源也不会被更改。validate
:如果不是‘None’,则检查合并类型的有效性。只能是“one_to_one”、“one_to_many”、“many_to_one”或“many_to_many”。
下面是一个简单的实例:
import pandas as pd
df1 = pd.DataFrame({"key": ["A", "B", "C", "D"], "value": [1, 2, 3, 4]})
df2 = pd.DataFrame({"key": ["E", "F"], "value": [10, 20]})
# 合并两个数据帧
df_merge=pd.merge(df1,df2,how='outer')
print(df_merge)
输出结果为:
key value
0 A 1
1 B 2
2 C 3
3 D 4
4 E 10
5 F 20
在实际应用中,应选择适当的函数和参数来实现所需的合并操作,包括对数据重复值和索引标签的处理、合并键的设置等。