Pandas concat 函数

pandas.concat() 方法可以连接 Pandas DataFrame 或 Series 对象。

pandas.concat() 语法

pandas.concat(objs,
              axis=0,
              join='outer',
              ignore_index=False,
              keys=None,
              levels=None,
              names=None,
              verify_integrity=False,
              sort=False,
              copy=True)

参数

objs 要连接的 Pandas Series 或 DataFrame 对象的序列或映射。
join 连接方法(innerouter)
axis 沿着行(axis=0)或列(axis=1)进行连接
ignore_index 布尔型。如果为 True,则忽略原 DataFrames 的索引。
keys 向结果索引添加标识符的顺序
levels 用于创建 MultiIndex 的级别
names 多重索引中的级别名称
verify_integrity 布尔型。如果为 True,则检查是否有重复。
sort 布尔型。当 joinouter 时,如果非 concatenation 轴尚未对齐,则对其进行排序。
copy 布尔型。如果为 False,避免不必要的数据复制。

返回值

如果所有的 Series 对象都沿 axis=0 连接,则返回一个 Series 对象。如果任何要连接的对象是一个 DataFrame,或者 Series 对象沿 axis=1 连接,它返回一个 DataFrame 对象。

示例:使用 pandas.concat() 方法沿行轴连接 2 个 Pandas Series

import pandas as pd
ser_1 = pd.Series([20,45,36,45])
print("Series-1:")
print(ser_1,"\n")
ser_2 = pd.Series([48,46,34,38])
print("Series-2:")
print(ser_2,"\n")
concatenated_ser=pd.concat([ser_1,ser_2])
print("Result after Concatenation of ser_1 and ser_2:")
print(concatenated_ser)

输出:

Series-1:
0    20
1    45
2    36
3    45
dtype: int64
Series-2:
0    48
1    46
2    34
3    38
dtype: int64
Result after Concatenation of ser_1 and ser_2:
0    20
1    45
2    36
3    45
0    48
1    46
2    34
3    38
dtype: int64

它沿 axis=0 或按行连接 Series 对象 ser_1ser_2。其中一个 Series 对象的行堆叠在另一个对象之上。级联后的对象默认取父对象的 index 值。我们可以设置 ignore_index=True 来为连接对象分配新的索引值。

import pandas as pd
ser_1 = pd.Series([20,45,36,45])
print("Series-1:")
print(ser_1,"\n")
ser_2 = pd.Series([48,46,34,38])
print("Series-2:")
print(ser_2,"\n")
concatenated_ser=pd.concat([ser_1,ser_2],ignore_index=True)
print("Result after Concatenation of ser_1 and ser_2:")
print(concatenated_ser)

输出:

Series-1:
0    20
1    45
2    36
3    45
dtype: int64
Series-2:
0    48
1    46
2    34
3    38
dtype: int64
Result after Concatenation of ser_1 and ser_2:
0    20
1    45
2    36
3    45
4    48
5    46
6    34
7    38
dtype: int64

它将连接 Series 对象,并为连接后的 Series 对象分配新的索引值。

示例:使用 pandas.concat() 方法沿列轴连接 2 个 Pandas 系列对象

我们在 pandas.concat() 方法中设置 axis=1,以水平或沿列轴连接 Series 对象。

import pandas as pd
ser_1 = pd.Series([20,45,36,45])
print("Series-1:")
print(ser_1,"\n")
ser_2 = pd.Series([48,46,34,38])
print("Series-2:")
print(ser_2,"\n")
concatenated_ser=pd.concat([ser_1,ser_2],axis=1)
print("Result after Horizontal Concatenation of ser_1 and ser_2:")
print(concatenated_ser)

输出:

Series-1:
0    20
1    45
2    36
3    45
dtype: int64
Series-2:
0    48
1    46
2    34
3    38
dtype: int64
Result after Horizontal Concatenation of ser_1 and ser_2:
    0   1
0  20  48
1  45  46
2  36  34
3  45  38

它水平堆叠了 Series 对象 ser_1ser_2

示例:使用 pandas.concat() 方法连接 2 个 Pandas DataFrame 对象

import pandas as pd
df_1 = pd.DataFrame({
    "Col-1":[1,2,3,4],
    "Col-2":[5,6,7,8]
})
print("DataFrame-1:")
print(df_1,"\n")
df_2 = pd.DataFrame({
    "Col-1":[10,20,30,40],
    "Col-2":[50,60,70,80]
})
print("DataFrame-2:")
print(df_2,"\n")
concatenated_df=pd.concat([df_1,df_2],ignore_index=True)
print("Result after Horizontal Concatenation of df_1 and df_2:")
print(concatenated_df)

输出:

DataFrame-1:
   Col-1  Col-2
0      1      5
1      2      6
2      3      7
3      4      8
DataFrame-2:
   Col-1  Col-2
0     10     50
1     20     60
2     30     70
3     40     80
Result after Horizontal Concatenation of df_1 and df_2:
   Col-1  Col-2
0      1      5
1      2      6
2      3      7
3      4      8
4     10     50
5     20     60
6     30     70
7     40     80

它连接了 DataFrame 对象 df_1df_2。通过设置 ignore_index=True,我们将新的索引分配给被连接的 DataFrame。

示例:使用 pandas.concat() 方法将 DataFrame 与一个系列对象进行连接

import pandas as pd
df = pd.DataFrame({
    "Col-1":[1,2,3,4],
    "Col-2":[5,6,7,8]
})
print("DataFrame Object:")
print(df,"\n")
ser = pd.Series([48,46,34,38])
print("Series Object:")
print(ser,"\n")
ser_df=pd.concat([df,ser],axis=1)
print("Concatenation of ser and df:")
print(ser_df)

输出:

DataFrame Object:
   Col-1  Col-2
0      1      5
1      2      6
2      3      7
3      4      8
Series Object:
0    48
1    46
2    34
3    38
dtype: int64
Concatenation of ser and df:
   Col-1  Col-2   0
0      1      5  48
1      2      6  46
2      3      7  34
3      4      8  38

它将 DataFrame 对象 dfSeries 对象 ser 连在一起。由于我们在 pandas.concat() 方法中设置了 axis=1,所以连接是按列进行的。