Pandas concat 函式
Suraj Joshi
2023年1月30日
2021年2月28日
-
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
,所以連線是按列進行的。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn