详解Pandas concat连接操作的5种使用方法

Pandas中的concat函数可以将多个数据框(DataFrame)按照一定的方式拼接在一起,这个函数的使用非常广泛,可以用来进行数据的横向和纵向拼接操作。本文将详细介绍concat函数的用法及注意事项。

concat函数基本用法

concat函数的基本用法如下:

  • pd.concat(objs, axis=0, join='outer', ignore_index=False)
  • objs:拼接的对象列表,可以是DataFrame、Series、列表、字典等。
  • axis:指定拼接的方向,0表示纵向拼接,1表示横向拼接。
  • join:指定拼接方式,默认是outer,表示并集,也可以选择inner,表示交集。
  • ignore_index:是否忽略原始数据框的索引,如果忽略,则拼接后的数据框重新设置索引。

下面通过一些示例来说明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包含了两个数据框的所有列,并且列的顺序是按照拼接时的顺序排列的。

ignore_index参数

默认情况下,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参数

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只保留了两个数据框的交集部分。

Series拼接

除了可以拼接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函数的基本用法及注意事项。

本文链接:https://my.lmcjl.com/post/20039.html

展开阅读全文

4 评论

留下您的评论.