當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame append方法用法及代碼示例


Pandas DataFrame.append(~) 方法將新行附加到源 DataFrame。要添加的新行可以采用 DataFrame、Series 或數組的形式。

請注意,返回了新的 DataFrame,並且源 DataFrame 保持不變。

參數

1.other | DataFrame 或命名為 Seriesdict-likelist 其中

要附加到源 DataFrame 的數據。

2. ignore_index | boolean | optional

  • 如果 True ,則生成的索引標簽將是默認的整數索引。

  • 如果 False ,則將使用 other 生成的索引標簽。

默認情況下,ignore_index=False

3. verify_integrity | boolean | optional

如果 True ,則重複的索引名稱將引發錯誤。默認情況下,verify_integrity=False

4. sort | boolean | optional

是否按列標簽對生成的 DataFrame 中的列進行排序。默認情況下,sort=False

警告

為了提高性能,請考慮一次附加所有行,而不是重複調用 append(~)

返回值

附加了新行的新DataFrame。

例子

列標簽匹配的情況

考慮以下數據幀:

df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"A":[7,8], "B":[9,10]}, index=["a","b"])



  [df]        [df_other]
   A  B           A  B
0  3  5        a  7  9
1  4  6        b  8  10

請注意 dfdf_other 如何共享相同的列標簽。如果是這種情況,那麽 append(~) 將導致垂直堆疊,如下所示:

df.append(df_other)



   A  B
0  3  5
1  4  6
a  7  9
b  8  10

列標簽不匹配的情況

考慮 other 不共享相同列標簽的情況:

df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"B":[7,8], "C":[9,10]}, index=["a","b"])



  [df]        [df_other]
   A  B           B  C
0  3  5        a  7  9
1  4  6        b  8  10

此處, dfdf_other 都有列 B ,但列 AC 不匹配。在這種情況下調用 append(~) 將導致帶有 NaN 的條目:

df.append(df_other)



   A    B  C
0  3.0  5  NaN
1  4.0  6  NaN
a  NaN  7  9.0
b  NaN  8  10.0

追加字典列表

考慮以下 DataFrame :

df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df



   A  B
0  3  5
1  4  6

要使用字典列表追加:

df.append([{"A":7,"B":8}, {"A":9,"B":10}])



   A  B
0  3  5
1  4  6
0  7  8
1  9  10

Pandas 保證行將始終根據列表的順序附加。

指定ignore_index

再次考慮以下兩個DataFrames:

df = pd.DataFrame({"A":[3,4], "B":[5,6]})
df_other = pd.DataFrame({"A":[7,8], "B":[9,10]}, index=["a","b"])



  [df]        [df_other]
   A  B           A  B
0  3  5        a  7  9
1  4  6        b  8  10

默認情況下, ignore_index=False ,這意味著將保留 other 的索引:

df.append(df_other)



   A  B
0  3  5
1  4  6
a  7  9
b  8  10

請注意索引 ab 的名稱是如何保留的。

我們可以設置 ignore_index=True 忽略 other 的索引:

df.append(df_other, ignore_index=True)



   A  B
0  3  5
1  4  6
2  7  9
3  8  10

請注意,新列的索引是 23 ,而不是原來的 ab

指定verify_integrity

考慮以下兩個 DataFrame:

df = pd.DataFrame({"B":[3,4], "C":[5,6]}, index=["a","b"])
df_other = pd.DataFrame({"B":[7,8], "C":[9,10]}, index=["b","c"])



  [df]        [df_other]
   B  C           B  C
a  3  5        b  7  9
b  4  6        c  8  10

請注意這兩個 DataFrames 都有索引 b

默認情況下, verify_integrity=False ,這意味著結果 DataFrame 中允許重複索引:

df.append(df_other) # verify_integrity=False



   B  C
a  3  5
b  4  6
b  7  9
c  8  10

相反,如果存在重複索引,設置 verify_integrity=True 將引發錯誤:

df.append(df_other, verify_integrity=True)



ValueError: Indexes have overlapping values: Index(['b'], dtype='object')

按列標簽排序

默認情況下, sort=False ,這意味著生成的 DataFrame 的列不會按列標簽排序:

df = pd.DataFrame({"C":[3,4], "A":[5,6]})
df.append([{"B":7,"E":8}], sort=False)



   C    A    B    E
0  3.0  5.0  NaN  NaN
1  4.0  6.0  NaN  NaN
0  NaN  NaN  7.0  8.0

通過設置 sort=True ,生成的 DataFrame 的列可以按列標簽排序:

df = pd.DataFrame({"C":[3,4], "A":[5,6]})
df.append([{"B":7,"E":8}], sort=True)



   A    B    C    E
0  5.0  NaN  3.0  NaN
1  6.0  NaN  4.0  NaN
0  NaN  7.0  NaN  8.0

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | append method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。