Pandas concat 函数
Suraj Joshi
2023年1月30日
-
pandas.concat()
语法 -
示例:使用
pandas.concat()
方法沿行轴连接 2 个 PandasSeries
-
示例:使用
pandas.concat()
方法沿列轴连接 2 个 Pandas 系列对象 -
示例:使用
pandas.concat()
方法连接 2 个 Pandas DataFrame 对象 -
示例:使用
pandas.concat()
方法将 DataFrame 与一个系列对象进行连接
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 |
连接方法(inner 或 outer ) |
axis |
沿着行(axis=0 )或列(axis=1 )进行连接 |
ignore_index |
布尔型。如果为 True ,则忽略原 DataFrames 的索引。 |
keys |
向结果索引添加标识符的顺序 |
levels |
用于创建 MultiIndex 的级别 |
names |
多重索引中的级别名称 |
verify_integrity |
布尔型。如果为 True ,则检查是否有重复。 |
sort |
布尔型。当 join 为 outer 时,如果非 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_1
和 ser_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_1
和 ser_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_1
和 df_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 对象 df
和 Series
对象 ser
连在一起。由于我们在 pandas.concat()
方法中设置了 axis=1
,所以连接是按列进行的。
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn