Pandas DataFrame DataFrame.append()関数

Suraj Joshi 2024年2月16日
  1. pandas.DataFrame.append() メソッドの構文:
  2. コード例:pandas.DataFrame.append() で 2つの DataFrame を追加する
  3. コード例:Dataframes を追加し、pandas.DataFrame.append() でインデックスを無視する
  4. DataFrame.append() メソッドで verify_integrity = True を設定する
  5. コード例:異なる列で DataFrame を追加
Pandas DataFrame DataFrame.append()関数

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 辞書のような入力
ignore_index ブール。True の場合、元の DataFrame のインデックスは無視されます。デフォルト値は False で、インデックスが使用されます。
verify_integrity ブール。True の場合、重複してインデックスを作成すると、ValueError が発生します。デフォルト値は False です。
sort ブール。列が整列していない場合は、元の DataFrame と他の DataFrame を並べ替えます。

コード例:pandas.DataFrame.append() で 2つの 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 を追加し、両方の DataFrame の行をマージする merged_df を返します。ここで、merged_df のインデックスは、それらの親 DataFrame と同じです。

コード例:Dataframes を追加し、pandas.DataFrame.append() でインデックスを無視する

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_1 の最後に df_2 を追加します。ここで、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 に存在しない列の対応するセルが 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

ここで、Age 列は df_2 にのみ存在するため、df_1 の行は Age 列の NaN 値を取得します。

また、sort = False を設定して、将来の Pandas バージョンで並べ替えが廃止されるという警告を抑制します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Pandas DataFrame