Pandas concat 函式

Suraj Joshi 2023年1月30日
  1. pandas.concat() 語法
  2. 示例:使用 pandas.concat() 方法沿行軸連線 2 個 Pandas Series
  3. 示例:使用 pandas.concat() 方法沿列軸連線 2 個 Pandas 系列物件
  4. 示例:使用 pandas.concat() 方法連線 2 個 Pandas DataFrame 物件
  5. 示例:使用 pandas.concat() 方法將 DataFrame 與一個系列物件進行連線
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,所以連線是按列進行的。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Pandas DataFrame