PythonでPandas DataFrameに行としてリストを追加する方法【append・loc・concat徹底解説】
PythonのPandasでは、リストを新しい行としてDataFrameに追加できます。代表的な方法はappend()メソッドとloc()メソッドの2つです。本記事では、それぞれの使い方をサンプルコード付きでわかりやすく解説します。
なお、append()メソッドはPandas 1.4以降で非推奨となり、Pandas 2.0で削除されました。現在のバージョンを使っている場合は、後半で紹介するpd.concat()またはloc()を使用してください。
準備:ライブラリのインポートとデータ作成
まず、必要なライブラリをインポートします。
import pandas as pd
次に、チームのランキングデータをリスト形式で用意します。
Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75], ['New Zealand', 4, 65], ['South Africa', 5, 50]]
このデータをもとにDataFrameを作成し、列名(Country、Rank、Points)を設定します。
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
方法1:append()メソッドで行を追加する
追加したい行をリストとして定義します。
myList = [["Sri Lanka", 6, 40]]
このリストを新しいDataFrameに変換し、append()メソッドで既存のDataFrameに連結します。ignore_index=Trueを指定することで、インデックスが自動的に振り直されます。
dataFrame = dataFrame.append(pd.DataFrame(myList, columns=['Country', 'Rank', 'Points']), ignore_index=True)
サンプルコード全体
import pandas as pd
# チームランキングのデータ(リスト形式)
Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75],
['New Zealand', 4, 65], ['South Africa', 5, 50]]
# DataFrameを作成し、列名を設定
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
print("DataFrame...\n", dataFrame)
# 追加する行(リスト)
myList = [["Sri Lanka", 6, 40]]
# リストを行として追加
dataFrame = dataFrame.append(pd.DataFrame(myList, columns=['Country', 'Rank', 'Points']), ignore_index=True)
# 更新後のDataFrameを表示
print("\n行追加後のUpdated DataFrame...\n", dataFrame)実行結果
DataFrame... Country Rank Points 0 India 1 100 1 Australia 2 85 2 England 3 75 3 New Zealand 4 65 4 South Africa 5 50 行追加後のUpdated DataFrame... Country Rank Points 0 India 1 100 1 Australia 2 85 2 England 3 75 3 New Zealand 4 65 4 South Africa 5 50 5 Sri Lanka 6 40
Sri Lankaの行が正しく追加されていることが確認できます。
方法2:loc()メソッドで行を追加する
次に、loc()メソッドを使う方法を見ていきましょう。こちらはPandas 2.0以降でも利用できる推奨手法です。
まず、元となるDataFrameを作成します。
Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75],
['New Zealand', 4, 65], ['South Africa', 5, 50], ['Bangladesh', 6, 40]]
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])追加する行をリストとして定義し、len(dataFrame)で取得した次のインデックス位置に代入します。
myList = ["Sri Lanka", 7, 30] # loc()を使ってリストを新しい行として追加 dataFrame.loc[len(dataFrame)] = myList
サンプルコード全体
import pandas as pd
# チームランキングのデータ(リスト形式)
Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75],
['New Zealand', 4, 65], ['South Africa', 5, 50], ['Bangladesh', 6, 40]]
# DataFrameを作成し、列名を設定
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
print("DataFrame...\n", dataFrame)
# 追加する行(リスト)
myList = ["Sri Lanka", 7, 30]
# loc()を使ってリストを新しい行として追加
dataFrame.loc[len(dataFrame)] = myList
# 更新後のDataFrameを表示
print("\nloc()で行追加後のUpdated DataFrame...\n", dataFrame)実行結果
DataFrame... Country Rank Points 0 India 1 100 1 Australia 2 85 2 England 3 75 3 New Zealand 4 65 4 South Africa 5 50 5 Bangladesh 6 40 loc()で行追加後のUpdated DataFrame... Country Rank Points 0 India 1 100 1 Australia 2 85 2 England 3 75 3 New Zealand 4 65 4 South Africa 5 50 5 Bangladesh 6 40 6 Sri Lanka 7 30
補足:最新のPandasではpd.concat()を使おう
Pandas 2.0以降でappend()を使うとエラーになるため、代わりにpd.concat()を使います。書き方は以下の通りです。
new_row = pd.DataFrame([['Sri Lanka', 6, 40]], columns=['Country', 'Rank', 'Points']) dataFrame = pd.concat([dataFrame, new_row], ignore_index=True)
まとめ
- append():従来の方法だが、Pandas 2.0以降では使用不可(非推奨→削除)
- loc[len(df)] = リスト:シンプルに1行だけ追加したい場合に便利
- pd.concat():現在推奨される標準的な連結方法
用途やPandasのバージョンに応じて、適切な方法を選択して活用してください。
-
PythonでpandasのDataFrameをCSVファイルに書き込む方法【to_csv()の使い方】
pandasのDataFrameをCSVファイルに出力する基本 PythonでpandasのDataFrameをCSVファイルに書き込むには、to_csv()メソッドを使用します。このメソッドは、DataFrameの内容をそのままCSV形式で保存できる、最もシンプルで一般的な方法です。 まずはサンプルデータとして、リストを値にもつ辞書を作成しましょう。 # リストの辞書を定義 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-
-
Pythonでリストに要素を追加する方法:append・insert・extendの使い方を解説
Pythonでは、リストに新しい要素を追加する方法がいくつか用意されています。目的に応じてappend()、insert()、extend()の3つのメソッドを使い分けることで、効率的にリストを操作できます。この記事では、それぞれのメソッドの特徴と具体的な使い方をサンプルコード付きで解説します。1. append():リストの末尾に要素を追加するリストの末尾に単一の要素を追加したい場合は、append()メソッドを使います。引数として渡したオブジェクト1つが、メソッドを呼び出したリストの最後に追加されます。サンプルコードmy_list = [2, 3, 1, -4, -1, -4] my_li