Skip to content

Pandas DataFrameに行と列を追加する方法:append関数を使いこなす

Pandasは、データサイエンティストにとって重要なオープンソースのPythonライブラリで、構造化データの操作が簡単なため、世界中でよく使用されています。その中でも、DataFrameはPandasの基本的なデータ構造の1つで、大量のデータを効率的に扱うことができます。

Pandas DataFrameを使用する際の一般的なタスクとして、データの追加があります。この操作は、行の追加、列の追加、さらにはDataFrame全体の追加まで行われます。最初はかなり難しく見えるかもしれませんが、一旦append関数をマスターすれば簡単です。それでは、PandasのDataFrame append関数をどのように活用するか、詳しく見ていきましょう。

Python Pandas Dataframeから簡単にデータ可視化を作成したいですか?

PyGWalkerは、可視化を伴う探索的データ解析のためのPythonライブラリです。 PyGWalker (opens in a new tab)を使用すると、pandas dataframe(および polars dataframe)を Tableauスタイルのユーザーインタフェースに変換し、視覚的な探索をシンプルにすることができます。

PyGWalker for Data visualization (opens in a new tab)

Pandas DataFrameのAppend関数

PandasのDataFrame append関数は、他のDataFrameオブジェクトの行を追加し、新しいDataFrameを返します。この関数を理解するには、この関数が元のDataFrameを変更せず、元のデータと追加されたデータを組み合わせた新しいDataFrameを作成することが重要です。

PandasのAppend関数の構文

append()関数の基本構文は、次のようになります。

DataFrame.append(other, ignore_index=False, sort=False)
  • other: DataFrame、Series、辞書、またはこれらのリストで定義された、追加するデータを定義します。
  • ignore_index: Trueの場合、結果のDataFrameのインデックスは0、1、…、nとラベル付けされます。デフォルトはFalseです。
  • sort: これは、結合しない軸をソートするかどうかを定義します。デフォルトはFalseです。

例を通じてappend関数を見ていきましょう。

DataFrameに行を追加する

import pandas as pd
 
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2'],
                    'C': ['C0', 'C1', 'C2'],
                    'D': ['D0', 'D1', 'D2']},
                    index=[0, 1, 2])
 
df2 = pd.DataFrame({'A': 'A3',
                    'B': 'B3',
                    'C': 'C3',
                    'D': 'D3'},
                    index=[3])
 
df1 = df1.append(df2)
. Pythonのimportで始まるコードは翻訳しないでください。frontmatterがある場合は、frontmatterのコンテンツを翻訳してください。jsonldコンポーネントがある場合、json-ldコンテンツも翻訳する必要があります。
 
print(df1)

上記の例では、df1は元のDataFrameであり、df2がそれに追加されます。結果のDataFrameには、df1df2のすべての行が含まれます。

複数のDataFrameを追加する

複数のDataFrameを追加することも簡単なプロセスです。append関数は、追加するDataFrameのリストを取ることができます。次の例を考えてみましょう。

df3 = pd.DataFrame({'A': 'A4',
                    'B': 'B4',
                    'C': 'C4',
                    'D': 'D4'},
                    index=[4])
 
df1 = df1.append([df2, df3])
 
print(df1)

この例では、df2df3を同時にdf1に追加しています。

PandasのDataFrame AppendとConcat

Pandasのappend()関数とconcat()関数の違いについて疑問に思うかもしれません。両方とも同様の目的を持つように思われます。 append()concat()の特定の場合であるため、concat()関数は、行軸(axis=0)または列軸(axis=1)に沿ってデータを追加するための機能など、より多様な機能を提供します。このより広範な機能性は、concat()がより複雑なデータ操作タスクにとってはより強力なツールになる可能性があることを意味します。ただし、単純な追加タスクの場合、append()はしばしば十分です。

DataFrame Pandasに列を追加する

DataFrameに列を追加するには、DataFrame内の新しい列にデータを割り当てるだけで実現できます。たとえば:

df1['E'] = ['E0', 'E1', 'E2', 'E3', 'E4']
print(df1)

この例では、新しい列'E'がdf1に追加されます。新しい列には、'E0'、'E1'、'E2'、'E3'、'E4'の値が設定されます。

Python DataFrameのForループの出力を追加する

forループの出力をDataFrameに追加することもできます。これは、ループでデータを処理または生成するシナリオで役立ちます。次の例を見てみましょう。

df = pd.DataFrame(columns = ['A', 'B', 'C'])
 
for i in range(5):
    df = df.append({'A': i, 'B': i*2, 'C': i+3}, ignore_index=True)
 
print(df)

この例では、ループの各繰り返しに対して、新しい行が作成され、DataFrame dfに追加されます。

PandasでDataFrame行を追加するためのベストプラクティス

append()関数は、DataFrameにデータを追加するための簡単なツールですが、常に新しいDataFrameを返すため、ループ内で行を追加する場合、メモリの消費量が著しく増加する可能性があります。

多数の行を追加する必要がある場合、行のリストを作成し、一度にDataFrameを作成する方が効率的な場合があります。

rows_list = []
for i in range(100000):
    dict1 = {'A': i, 'B': i*2, 'C': i+3}
    rows_list.append(dict1)

df = pd.DataFrame(rows_list)

この例では、DataFrameは1回だけ作成され、メモリと処理時間を節約します。

Append()を使用したPandas DataFrameのマージ方法

merge()join()関数は、DataFramesをマージまたは結合するために特に設計されていますが、DataFramesが同じ列を持っている場合、append()関数でもこれを実現できます。

df1 = df1.append(df2, ignore_index=True)

この例では、df2df1の末尾に追加され、実質的に2つのDataFramesがマージされます。

結論

この記事では、Pandasのappend()関数を使用して、DataFrameに行や列を追加する方法、複数のDataFramesを追加する方法、列を追加する方法、ループからの出力を追加する方法について説明しました。append()は便利で使いやすいですが、大規模なデータセットの場合には、他の方法がより効率的である場合があります。

よくある質問

  1. Pandas DataFrameのappend()関数は何に使用されますか?

    PandasのDataFrameのappend()関数は、他のDataFrameオブジェクトの行を終わりに追加して、新しいDataFrameオブジェクトを返します。オリジナルのDataFrameを変更しません。代わりに、オリジナルと追加されたデータが含まれる新しいDataFrameが作成されます。

  2. append()を使用して複数のDataFramesを追加できますか?

    はい、append()関数を使用して複数のDataFramesを追加できます。DataFramesのリストを一緒に追加できます。

  3. DataFrameにデータを追加するためにappend()メソッドを使用することをお勧めしますか?

    append()関数は使いやすく、多くの場合に適していますが、大規模なDataFrameの場合には、常に新しいDataFrameを返すため、最も効率的な方法ではない場合があります。代わりに、行または列のリストを作成し、このリストを一度にDataFrameに変換することを検討してください。