📜  Pandas 数据concat(1)

📅  最后修改于: 2023-12-03 15:03:30.125000             🧑  作者: Mango

Pandas 数据concat

简介

在 Pandas 中,我们经常需要将多个 DataFrame 或 Series 进行合并,这时候 concat 函数就派上用场了。Pandas 中的 concat 函数可以实现多个 DataFrame 或 Series 的纵向或横向合并,类似于 SQL 语句中的 UNION 操作。

函数参数
pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False)

其中,objs 表示需要合并的 DataFrame 或 Series;axis 表示合并的方向,0 表示纵向合并,1 表示横向合并;join 表示合并方式,可选参数为 outer(并集)、inner(交集)、left 和 right;ignore_index 表示是否忽略原始索引,若为 True,则合并后重新生成一个索引。

简单示例
import pandas as pd

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                    index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']},
                    index=[4, 5, 6, 7])

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                    'B': ['B8', 'B9', 'B10', 'B11'],
                    'C': ['C8', 'C9', 'C10', 'C11'],
                    'D': ['D8', 'D9', 'D10', 'D11']},
                    index=[8, 9, 10, 11])

frames = [df1, df2, df3]

result = pd.concat(frames, axis=0)

print(result)
# 输出如下:
#      A   B   C   D
# 0   A0  B0  C0  D0
# 1   A1  B1  C1  D1
# 2   A2  B2  C2  D2
# 3   A3  B3  C3  D3
# 4   A4  B4  C4  D4
# 5   A5  B5  C5  D5
# 6   A6  B6  C6  D6
# 7   A7  B7  C7  D7
# 8   A8  B8  C8  D8
# 9   A9  B9  C9  D9
# 10 A10 B10 C10 D10
# 11 A11 B11 C11 D11

这里我们创建了三个 DataFrame:df1、df2 和 df3,然后将它们合并成一个 DataFrame,合并的方法是在纵向(axis=0)方向上进行合并。

多列连接
import pandas as pd

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

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

print(result)
# 输出如下:
#    key   A   B key   C   D
# 0  K0   A0  B0  K0  C0  D0
# 1  K1   A1  B1  K1  C1  D1
# 2  K2   A2  B2  K2  C2  D2
# 3  K3   A3  B3  K3  C3  D3

这里我们同样创建了两个 DataFrame:df1 和 df2,然后将它们合并成一个 DataFrame,合并的方法是在横向(axis=1)方向上进行合并。

按行索引连接
import pandas as pd

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']},
                    index=[0, 1, 2, 3])

df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                    index=[0, 2, 3, 4])

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

print(result)
# 输出如下:
#     A    B   C   D
# 0  A0   B0  C0  D0
# 2  A2   B2  C1  D1
# 3  A3   B3  C2  D2

这里我们同样创建了两个 DataFrame:df1 和 df2,然后将它们合并成一个 DataFrame,合并的方法是在横向(axis=1)方向上进行合并,并利用 join 参数指定只连接相同行索引的数据。