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_1 和 df_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 版本中被取消的警告保持沉默。