API · Pandas

Pandas DataFrame DataFrame.append() 函式

Pandas 中的 append 方法將兩個不同 DataFrame 的行合併,並返回新的 DataFrame。

本頁內容

pandas.DataFrame.append() 將一個 DataFrame 作為輸入,並將其行與呼叫該方法的 DataFrame 的行合併,最後返回一個新的 DataFrame。如果輸入 DataFrame 中的任何一列在呼叫者 DataFrame 中不存在,那麼這些列將被新增到 DataFrame 中,缺失的值將被設定為 NaN

pandas.DataFrame.append() 方法的語法

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)

引數

other 輸入 DataFrame 或 Series,或 Python Dictionary-like,其行將被追加
ignore_index 布林型。如果是 True,則忽略原始 DataFrame 中的索引,預設值是 False,表示使用索引。預設值是 False,意味著使用索引
verify_integrity 布林型。如果是 True,在建立有重複的索引時引發 ValueError。預設值是 False
sort 布林型。如果列不對齊,它將對原始資料和其他 DataFrame 進行排序

示例程式碼:用 pandas.DataFrame.append() 新增兩個 DataFrame

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2})

merged_df = df_1.append(df_2)
print(merged_df)

輸出:

     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
    Name  Salary
0    Ram      22
1  Shyam      23
2   Hari      31
     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
0     Ram      22
1   Shyam      23
2    Hari      31

它在 df_1 的末尾新增 df_2,並返回 merged_df,合併兩個 DataFrames 的行。在這裡,merged_df 的索引與它們的父 DataFrames 相同。

示例程式碼: 用 pandas.DataFrame.append() 來追加 DataFrame 並忽略索引

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2})

merged_df = df_1.append(df_2,ignore_index=True)

print(df_1)
print(df_2)
print( merged_df)

輸出:

     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
    Name  Salary
0    Ram      22
1  Shyam      23
2   Hari      31
     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
3     Ram      22
4   Shyam      23
5    Hari      31

它將 df_2 追加到 df_1 的末尾,這裡 merged_df 通過使用 append() 方法中的 ignore_index=True 引數得到全新的索引。

DataFrame.append() 方法中設定 verify_integrity=True

如果我們在 append() 方法中設定 verify_integrity=True,我們會得到重複索引的 ValueError

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2})

merged_df = df_1.append(df_2,verify_integrity=True)

print(df_1)
print(df_2)
print( merged_df)

輸出:

ValueError: Indexes have overlapping values: Int64Index([0, 1, 2], dtype='int64')

由於 df_1df_2 中的元素預設有相同的索引,所以產生了 ValueError。為了防止這個錯誤,我們使用 verify_integrity 的預設值,即 verify_integrity=False

示例程式碼:新增不同列的 DataFrame

如果我們追加一個不同列的 DataFrame,這個列就會被新增到生成的 DataFrame 中,原 DataFrame 或其他 DataFrame 中不存在的列的相應單元格被設定為 NaN

import pandas as pd

names_1=['Hisila', 'Brian','Zeppy']
salary_1=[23,30,21]

names_2=['Ram','Shyam',"Hari"]
salary_2=[22,23,31]
Age=[30,31,33]

df_1 = pd.DataFrame({'Name': names_1, 'Salary': salary_1})
df_2 = pd.DataFrame({'Name': names_2, 'Salary': salary_2,"Age":Age})

merged_df = df_1.append(df_2, sort=False)

print(df_1)
print(df_2)
print( merged_df)

輸出:

     Name  Salary
0  Hisila      23
1   Brian      30
2   Zeppy      21
    Name  Salary  Age
0    Ram      22   30
1  Shyam      23   31
2   Hari      31   33
     Name  Salary   Age
0  Hisila      23   NaN
1   Brian      30   NaN
2   Zeppy      21   NaN
0     Ram      22  30.0
1   Shyam      23  31.0
2    Hari      31  33.0

這裡,df_1 的行得到 Age 列的 NaN 值,因為 Age 列只存在於 df_2 中。

我們還設定了 sort=False,以使排序在未來的 Pandas 版本中被取消的警告保持沉默。