Pandas中的concat函数可以将多个数据框(DataFrame)按照一定的方式拼接在一起,这个函数的使用非常广泛,可以用来进行数据的横向和纵向拼接操作。本文将详细介绍concat函数的用法及注意事项。
concat函数的基本用法如下:
下面通过一些示例来说明concat函数的用法。
纵向拼接是指将多个数据框按行堆叠在一起,即增加行数。这种情况下,我们需要保证每个数据框的列名都相同,并且列的顺序也要相同,否则会出现拼接错误。
例如,我们有两个数据框df1和df2:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
我们可以使用concat函数将这两个数据框按行拼接在一起:
df = pd.concat([df1, df2])
print(df)
输出结果为:
A B
0 1 4
1 2 5
2 3 6
0 7 10
1 8 11
2 9 12
可以看到,拼接后的数据框df包含了两个数据框的所有行,并且行的索引从0开始重新排列。
横向拼接是指将多个数据框按列拼接在一起,即增加列数。这种情况下,我们需要保证每个数据框的行数相同,并且行的顺序也要相同,否则会出现拼接错误。
例如,我们有两个数据框df1和df2:
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
我们可以使用concat函数将这两个数据框按列拼接在一起:
df = pd.concat([df1, df2], axis=1)
print(df)
输出结果为:
A B A B
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
可以看到,拼接后的数据框df包含了两个数据框的所有列,并且列的顺序是按照拼接时的顺序排列的。
默认情况下,concat函数会将原始数据框的索引保留下来,拼接后的数据框的索引是原始数据框索引的并集。如果希望拼接后的数据框重新设置索引,可以使用ignore_index参数。将其设置为True即可忽略原始数据框的索引,拼接后的数据框重新设置索引:
df = pd.concat([df1, df2], ignore_index=True)
print(df)
输出结果为:
A B C D
0 1 4 7.0 10
1 2 5 8.0 11
2 3 6 9.0 12
可以看到,拼接后的数据框df重新设置了索引,并且缺失值填充为NaN。
join参数用于指定拼接方式,可以选择outer或inner。默认情况下是outer,表示并集。如果指定为inner,则表示交集。如果存在缺失值,那么inner拼接后的数据框中会将缺失值删除。例如:
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'B': [10, 11, 12], 'C': [7, 8, 9]})
df = pd.concat([df1, df2], axis=1, join='inner')
print(df)
输出结果为:
A B B C
0 1 4 10 7
1 2 5 11 8
2 3 6 12 9
可以看到,拼接后的数据框df只保留了两个数据框的交集部分。
除了可以拼接DataFrame,concat函数还可以拼接Series。在拼接Series时,可以通过指定axis参数来控制是纵向拼接还是横向拼接。例如:
s1 = pd.Series([1, 2, 3], name='A')
s2 = pd.Series([4, 5, 6], name='B')
s = pd.concat([s1, s2], axis=1)
print(s)
输出结果为:
A B
0 1 4
1 2 5
2 3 6
可以看到,拼接后的数据框s包含了两个Series的所有值,并且列名是Series的名称。
以上就是concat函数的基本用法及注意事项。
本文链接:http://task.lmcjl.com/news/4550.html