Pandas DataFrame DataFrame.append() 函式
-
pandas.DataFrame.append()
方法的語法 -
示例程式碼:用
pandas.DataFrame.append()
新增兩個 DataFrame -
示例程式碼: 用
pandas.DataFrame.append()
來追加 DataFrame 並忽略索引 -
在
DataFrame.append()
方法中設定verify_integrity=True
- 示例程式碼:新增不同列的 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 版本中被取消的警告保持沉默。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn