欢迎访问宙启技术站
智能推送

Pandas实现数据拼接的操作方法详解

发布时间:2023-05-17 21:48:10

Pandas是Python语言中用于数据分析的强大库,它提供了很多用于处理数据的函数和方法。其中,数据拼接(concatenation)是一种经常使用的操作,特别是在整合多个数据源时。本文将详细介绍Pandas中实现数据拼接的操作方法。

一、数据拼接的概念

数据拼接是指将多个数据源合并成一个数据源的操作。这些数据源的结构和数据内容可能不相同,但它们通常都属于同一个主题,例如同一个城市的温度、湿度、风速等数据。将它们拼接在一起,就可以得到一个包含所有信息的数据集,方便后续的分析和处理。

在Pandas中,数据拼接有三种方式:横向拼接、纵向拼接和合并。

二、横向拼接

横向拼接是将两个或多个数据表在行方向上拼接成一个新的数据表,这个过程中数据表的列数必须相同。例如,我们有两个数据表df1和df2,它们分别长这样:

df1:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9

df2:

   A   B   C
0  10  11  12
1  13  14  15
2  16  17  18

要将它们拼接在一起,只需使用concat函数即可:

df = pd.concat([df1,df2],axis=1)
print(df)

输出:

   A  B  C   A   B   C
0  1  2  3  10  11  12
1  4  5  6  13  14  15
2  7  8  9  16  17  18

其中,concat函数的 个参数是要拼接的数据表列表,第二个参数axis=1表示要在行方向上拼接。注意,这里的A、B、C列和索引都重复了,如果需要合并重复的列和索引,可以使用join参数,例如:

df = pd.concat([df1,df2],axis=1,join='inner')
print(df)

输出:

   A  B  C   A   B   C
0  1  2  3  10  11  12
1  4  5  6  13  14  15
2  7  8  9  16  17  18

这里使用了join='inner'参数,表示只保留两个数据表中都存在的列和索引。

三、纵向拼接

纵向拼接是将两个或多个数据表在列方向上拼接成一个新的数据表,这个过程中数据表的行数必须相同。例如,我们有两个数据表df1和df2,它们分别长这样:

df1:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9

df2:

   D   E   F
0  10  11  12
1  13  14  15
2  16  17  18

要将它们拼接在一起,只需使用concat函数即可:

df = pd.concat([df1,df2],axis=0)
print(df)

输出:

    A    B    C     D     E     F
0   1    2    3   NaN   NaN   NaN
1   4    5    6   NaN   NaN   NaN
2   7    8    9   NaN   NaN   NaN
0  NaN  NaN  NaN    10    11    12
1  NaN  NaN  NaN    13    14    15
2  NaN  NaN  NaN    16    17    18

其中,concat函数的 个参数是要拼接的数据表列表,第二个参数axis=0表示要在列方向上拼接。可以看到,拼接后的结果包括所有的列和索引,并且缺失的部分用NaN填充。如果需要合并重复的列和索引,可以使用join参数,例如:

df = pd.concat([df1,df2],axis=0,join='inner')
print(df)

输出:

Empty DataFrame
Columns: []
Index: [0, 1, 2, 0, 1, 2]

这里使用了join='inner'参数,表示只保留两个数据表中都存在的列和索引。

四、合并

合并是将两个或多个数据表根据某些共同的列(通常是主键)合并成一个新的数据表。例如,我们有两个数据表df1和df2,它们分别长这样:

df1:

   A  B  key
0  1  2   K0
1  4  5   K1
2  7  8   K2

df2:

    C   D  key
0  10  11  K0
1  13  14  K1
2  16  17  K2

要将它们根据key列合并在一起,可以使用merge函数:

df = pd.merge(df1,df2,on='key')
print(df)

输出:

   A  B key   C   D
0  1  2  K0  10  11
1  4  5  K1  13  14
2  7  8  K2  16  17

其中,merge函数的 个参数是要合并的数据表列表,第二个参数on='key'表示要根据key列合并。这个过程类似于SQL中的JOIN操作。

如果两个数据表中的主键名称不同,可以使用left_on和right_on参数指定左右两个数据表的主键:

df1:

   A  B  key1
0  1  2   K0
1  4  5   K1
2  7  8   K2

df2:

    C   D  key2
0  10  11   K0
1  13  14   K1
2  16  17   K2

df = pd.merge(df1,df2,left_on='key1',right_on='key2')
print(df)

输出:

   A  B key1   C   D key2
0  1  2   K0  10  11   K0
1  4  5   K1  13  14   K1
2  7  8   K2  16  17   K2

但是在这种情况下,合并后的结果包括两个主键,需要将它们去掉。可以使用drop函数来删除不需要的列:

df = df.drop(columns=['key1','key2'])
print(df)

输出:

   A  B   C   D
0  1  2  10  11
1  4  5  13  14
2  7  8  16  17

这样就得到了合并后的结果,其中的A、B、C、D就是最终要保留的列。

综上所述,Pandas提供了非常方便的方法来进行数据拼接和合并。无论是横向拼接、纵向拼接还是合并,都可以通过一些简单的参数设置来实现。这些操作可以大大提高数据整合和分析的效率,有助于我们更好地理解和