Pandas DataFrame DataFrame.append()関数

  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.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 ブール。Ture の場合、元の DataFrame のインデックスは無視されます。デフォルト値は False で、インデックスが使用されます。
verify_integrity ブール。Ture の場合、重複してインデックスを作成すると、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 バージョンで並べ替えが廃止されるという警告を抑制します。

関連記事 - Pandas DataFrame

  • Pandas DataFrame DataFrame.query()関数
  • Pandas DataFrame DataFrame.sample()関数
  • comments powered by Disqus