Python Pandas Concat

Python Pandas Concat

Python Pandas Concat

1. 简介

在数据分析和数据处理中,经常需要合并(拼接)多个数据集,这样可以将多个数据源中的数据整合在一起,方便进行后续的分析和处理。Python中的Pandas库提供了concat函数,用于实现数据的合并。

2. concat函数的基本用法

concat函数用于将多个数据结构按照指定的轴进行拼接,默认是按行(行对齐)进行拼接。下面是concat函数的基本用法:

pd.concat(objs, axis=0, join='outer', ignore_index=False)
Python

参数解释:

  • objs:输入的数据结构,可以是一个Series,DataFrame或者是一个包含多个Series/DataFrame的列表或者字典。
  • axis:指定拼接的轴,0表示按行拼接,1表示按列拼接。
  • join:指定拼接的方式。可以取值inner或者outer,默认是outer
  • ignore_index:合并后是否重置行索引。

3. 示例

首先导入需要的库:

import pandas as pd
Python

我们使用两个示例数据集来进行拼接演示。假设有以下两个数据集:

数据集1

Name Age City
0 Alice 25 Beijing
1 Bob 30 Shanghai
2 Charlie 35 Hangzhou

数据集2

Name Age Gender
0 David 40 M
1 Emily 45 F

在示例中,数据集1中包含了3个人的姓名、年龄和所在城市信息,数据集2中包含了2个人的姓名、年龄和性别信息。我们将使用concat函数将这两个数据集按行拼接。

# 创建示例数据集
data1 = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'City': ['Beijing', 'Shanghai', 'Hangzhou']}
df1 = pd.DataFrame(data1)

data2 = {'Name': ['David', 'Emily'],
         'Age': [40, 45],
         'Gender': ['M', 'F']}
df2 = pd.DataFrame(data2)

# 使用concat函数拼接数据集
result = pd.concat([df1, df2])

print(result)
Python

运行以上代码,得到拼接后的结果:

      Name  Age      City Gender
0    Alice   25   Beijing    NaN
1      Bob   30  Shanghai    NaN
2  Charlie   35  Hangzhou    NaN
0    David   40       NaN      M
1    Emily   45       NaN      F
Python

从结果可以看出,数据集1和数据集2按行进行了拼接,并且在没有对应的数据处出现了NaN值。同时,行索引也被保留了下来。

4. 拼接多个数据集

除了可以拼接两个数据集之外,我们还可以拼接多个数据集。假设有以下三个数据集:

数据集1

Name Age
0 Alice 25
1 Bob 30
2 Charlie 35

数据集2

City Gender
0 Beijing M
1 Shanghai F

数据集3

Department Salary
0 IT 5000
1 Sales 8000

我们可以使用同样的方式将这三个数据集按行进行拼接:

# 创建示例数据集
data1 = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)

data2 = {'City': ['Beijing', 'Shanghai'],
         'Gender': ['M', 'F']}
df2 = pd.DataFrame(data2)

data3 = {'Department': ['IT', 'Sales'],
         'Salary': [5000, 8000]}
df3 = pd.DataFrame(data3)

# 使用concat函数拼接数据集
result = pd.concat([df1, df2, df3])

print(result)
Python

运行以上代码,得到拼接后的结果:

      Name   Age      City Gender Department  Salary
0    Alice  25.0       NaN    NaN        NaN     NaN
1      Bob  30.0       NaN    NaN        NaN     NaN
2  Charlie  35.0       NaN    NaN        NaN     NaN
0      NaN   NaN   Beijing      M        NaN     NaN
1      NaN   NaN  Shanghai      F        NaN     NaN
0      NaN   NaN       NaN    NaN         IT  5000.0
1      NaN   NaN       NaN    NaN      Sales  8000.0
Python

从结果可以看出,三个数据集按行进行了拼接,并且在没有对应的数据处出现了NaN值。

5. 按列拼接

除了按行进行拼接外,我们还可以按列进行拼接。这时,需要设置axis=1

假设有以下两个数据集:

数据集1

Name Age City
0 Alice 25 Beijing
1 Bob 30 Shanghai
2 Charlie 35 Hangzhou

数据集2

Gender Salary
0 M 5000
1 F 8000

我们使用concat函数按列进行拼接:

# 创建示例数据集
data1 = {'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'City': ['Beijing', 'Shanghai', 'Hangzhou']}
df1 = pd.DataFrame(data1)

data2 = {'Gender': ['M', 'F'],
         'Salary': [5000, 8000]}
df2 = pd.DataFrame(data2)

# 使用concat函数按列拼接数据集
result = pd.concat([df1, df2], axis=1)

print(result)
Python

运行以上代码,得到拼接后的结果:

      Name  Age      City Gender  Salary
0    Alice   25   Beijing      M    5000
1      Bob   30  Shanghai      F    8000
2  Charlie   35  Hangzhou    NaN     NaN
Python

从结果可以看出,数据集1和数据集2按列进行了拼接,并且在没有对应的数据处出现了NaN值。

6. 其他参数

在使用concat函数时,还可以根据需要设置其他参数,以满足实际的需求。

6.1 join参数

join参数用于指定拼接的方式,可以取值inner或者outer,默认是outer

  • inner:将拼接的数据集中只有相同行或列的数据保留,其他数据将被丢弃。
  • outer:将拼接的数据集中所有行或列的数据保留,不同的数据将用NaN填充。

下面是一个示例:

# 使用concat函数按列拼接数据集,并设置join参数为inner
result_inner = pd.concat([df1, df2], axis=1, join='inner')

# 使用concat函数按列拼接数据集,并设置join参数为outer
result_outer = pd.concat([df1, df2], axis=1, join='outer')

print(result_inner)
print(result_outer)
Python

运行以上代码,得到拼接后的结果:

      Name  Age      City Gender  Salary
0    Alice   25   Beijing      M    5000
1      Bob   30  Shanghai      F    8000
Python
      Name  Age      City Gender  Salary
0    Alice   25   Beijing      M  5000.0
1      Bob   30  Shanghai      F  8000.0
2  Charlie   35  Hangzhou    NaN     NaN
Python

从结果可以看出,当设置join='inner'时,只有相同的行或列才保留下来,而当设置join='outer'时,所有的行或列都保留下来,并且不同的数据用NaN填充。

6.2 ignore_index参数

ignore_index参数用于确定拼接后是否重置行索引,可以取值TrueFalse,默认是False

  • True:重置行索引,使得拼接后的数据集的行索引从0开始递增。
  • False:保留原始的行索引。

下面是一个示例:

# 使用concat函数按行拼接数据集,并设置ignore_index参数为True
result_ignore_index = pd.concat([df1, df2], ignore_index=True)

print(result_ignore_index)
Python

运行以上代码,得到拼接后的结果:

      Name  Age      City Gender  Salary
0    Alice   25   Beijing    NaN     NaN
1      Bob   30  Shanghai    NaN     NaN
2  Charlie   35  Hangzhou    NaN     NaN
3    David   40       NaN      M     NaN
4    Emily   45       NaN      F     NaN
Python

从结果可以看出,拼接后的数据集的行索引被重置为从0开始递增。

7.总结

本文介绍了Python Pandas中的concat函数的基本用法和参数设置,通过几个示例展示了数据集的拼接操作。concat函数可以方便地将多个数据集按照指定的轴进行拼接,实现数据整合的操作。在实际的数据分析和处理中,拼接数据集是非常常见的操作,通过掌握concat函数的用法,可以更加高效地处理和分析数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册