Pandas DataFrame DataFrame.append()関数
-
pandas.DataFrame.append()メソッドの構文: -
コード例:
pandas.DataFrame.append()で 2つのDataFrameを追加する -
コード例:Dataframes を追加し、
pandas.DataFrame.append()でインデックスを無視する -
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 辞書のような入力 |
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_1 と df_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 is a backend software engineer at Matrice.ai.
LinkedIn