Python Pandas Concat

1. 简介
在数据分析和数据处理中,经常需要合并(拼接)多个数据集,这样可以将多个数据源中的数据整合在一起,方便进行后续的分析和处理。Python中的Pandas库提供了concat函数,用于实现数据的合并。
2. concat函数的基本用法
concat函数用于将多个数据结构按照指定的轴进行拼接,默认是按行(行对齐)进行拼接。下面是concat函数的基本用法:
pd.concat(objs, axis=0, join='outer', ignore_index=False)
参数解释:
objs:输入的数据结构,可以是一个Series,DataFrame或者是一个包含多个Series/DataFrame的列表或者字典。axis:指定拼接的轴,0表示按行拼接,1表示按列拼接。join:指定拼接的方式。可以取值inner或者outer,默认是outer。ignore_index:合并后是否重置行索引。
3. 示例
首先导入需要的库:
import pandas as pd
我们使用两个示例数据集来进行拼接演示。假设有以下两个数据集:
数据集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)
运行以上代码,得到拼接后的结果:
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
从结果可以看出,数据集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)
运行以上代码,得到拼接后的结果:
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
从结果可以看出,三个数据集按行进行了拼接,并且在没有对应的数据处出现了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)
运行以上代码,得到拼接后的结果:
Name Age City Gender Salary
0 Alice 25 Beijing M 5000
1 Bob 30 Shanghai F 8000
2 Charlie 35 Hangzhou NaN NaN
从结果可以看出,数据集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)
运行以上代码,得到拼接后的结果:
Name Age City Gender Salary
0 Alice 25 Beijing M 5000
1 Bob 30 Shanghai F 8000
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
从结果可以看出,当设置join='inner'时,只有相同的行或列才保留下来,而当设置join='outer'时,所有的行或列都保留下来,并且不同的数据用NaN填充。
6.2 ignore_index参数
ignore_index参数用于确定拼接后是否重置行索引,可以取值True或False,默认是False。
True:重置行索引,使得拼接后的数据集的行索引从0开始递增。False:保留原始的行索引。
下面是一个示例:
# 使用concat函数按行拼接数据集,并设置ignore_index参数为True
result_ignore_index = pd.concat([df1, df2], ignore_index=True)
print(result_ignore_index)
运行以上代码,得到拼接后的结果:
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
从结果可以看出,拼接后的数据集的行索引被重置为从0开始递增。
7.总结
本文介绍了Python Pandas中的concat函数的基本用法和参数设置,通过几个示例展示了数据集的拼接操作。concat函数可以方便地将多个数据集按照指定的轴进行拼接,实现数据整合的操作。在实际的数据分析和处理中,拼接数据集是非常常见的操作,通过掌握concat函数的用法,可以更加高效地处理和分析数据。
极客教程