pandas拼接两个dataframe

pandas拼接两个dataframe

pandas拼接两个dataframe

在数据分析和处理中,经常会遇到需要合并或拼接不同的dataframe的情况。pandas库提供了多种函数和方法来实现这一目的,比如concat、merge等。本文将重点介绍如何使用pandas库中的concat方法来拼接两个dataframe。

1. 创建两个dataframe

首先,我们需要创建两个示例dataframe,以便后续进行拼接操作。我们分别命名这两个dataframe为df1和df2。

import pandas as pd

data1 = {'A': [1, 2, 3],
         'B': ['a', 'b', 'c']}
df1 = pd.DataFrame(data1)

data2 = {'A': [4, 5, 6],
         'B': ['d', 'e', 'f']}
df2 = pd.DataFrame(data2)

print("df1:")
print(df1)
print("df2:")
print(df2)

运行以上代码,我们可以得到df1和df2两个dataframe的具体内容:

df1:
   A  B
0  1  a
1  2  b
2  3  c

df2:
   A  B
0  4  d
1  5  e
2  6  f

2. 使用concat方法拼接dataframe

一旦有了两个待拼接的dataframe,我们可以使用concat方法来将它们合并为一个新的dataframe。concat方法的语法为:

result = pd.concat([df1, df2])

其中,[df1, df2]表示待拼接的dataframe列表,concat方法会按照列表中dataframe的顺序进行拼接。接下来,我们执行上述代码并输出:

result = pd.concat([df1, df2])
print("result:")
print(result)

执行以上代码,我们可以得到拼接后的result dataframe的内容:

result:
   A  B
0  1  a
1  2  b
2  3  c
0  4  d
1  5  e
2  6  f

可以看到,concat方法将df2按照df1的行顺序进行了拼接,生成了一个新的dataframe。需要注意的是,拼接时会保留原本dataframe的行索引,如果想要重置索引,可以通过ignore_index参数设置为True:

result = pd.concat([df1, df2], ignore_index=True)
print("result with reset index:")
print(result)
result with reset index:
   A  B
0  1  a
1  2  b
2  3  c
3  4  d
4  5  e
5  6  f

此时,result dataframe的行索引已经被重置为0到5。

3. 沿列方向拼接dataframe

除了沿行方向拼接外,我们还可以沿列方向拼接两个dataframe。concat方法可以通过设置axis参数来指定拼接的方向,0表示沿行方向,1表示沿列方向。我们可以创建两个有相同列名的dataframe,并尝试沿列方向进行拼接:

data3 = {'C': [7, 8, 9],
         'D': ['g', 'h', 'i']}
df3 = pd.DataFrame(data3)

result_col = pd.concat([df1, df3], axis=1)
print("result_col:")
print(result_col)

执行以上代码,可以得到沿列方向拼接后的result_col dataframe的内容:

result_col:
   A  B  C  D
0  1  a  7  g
1  2  b  8  h
2  3  c  9  i

可以看到,两个dataframe在列方向上被拼接为一个新的dataframe。需要注意的是,拼接时会根据行索引对齐数据,缺失的部分会被填充为NaN。如果想要去除缺失值,可以通过设置join参数为inner:

result_col_inner = pd.concat([df1, df3], axis=1, join='inner')
print("result_col_inner:")
print(result_col_inner)
result_col_inner:
   A  B  C  D
0  1  a  7  g
1  2  b  8  h
2  3  c  9  i

通过设置join参数为’inner’,我们得到了去除缺失值后的result_col_inner dataframe。

4. 使用append方法拼接dataframe

除了concat方法外,pandas还提供了append方法可以用于拼接两个dataframe。如果只需要在一个dataframe上追加另一个dataframe,可以使用append方法。我们可以尝试使用append方法将df2追加到df1上:

result_append = df1.append(df2)
print("result_append:")
print(result_append)

执行以上代码,可以得到通过append方法追加后的result_append dataframe的内容:

result_append:
   A  B
0  1  a
1  2  b
2  3  c
0  4  d
1  5  e
2  6  f

可以看到,通过append方法追加后的效果与使用concat方法得到的效果是一样的。需要注意的是,append方法生成的是一个新的dataframe而不会改变原有dataframe。

总结

在数据分析和处理中,合并或拼接不同的dataframe是非常常见的操作。本文详细介绍了使用pandas库中的concat方法来实现两个dataframe的拼接,并且介绍了沿列方向拼接以及利用append方法进行追加操作。通过灵活应用这些方法,可以更好地处理和分析数据,提升工作效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程