Pandas DataFrame を List に変換する方法
Updated on
Pandas DataFrame を Python の list に変換する処理は、データクレンジング、エクスポート、特徴量エンジニアリング、API 用データ整形などでよく行われます。tolist() は今でも広く使われていますが、Pandas では to_numpy() や to_dict() といった、より明示的でモダンなメソッドが導入されており、多くの場合こちらの方が分かりやすく、高速です。
この最新版ガイドでは、次の内容を扱います:
- DataFrame 全体を list of lists に変換する方法
- 単一列 を list に変換する方法
- ネストした list や tuple を作成する方法
- list of dicts(JSON / API 出力でよく使われる形式)といったモダンな代替手段
⚡ おまけ: DataFrame を即座に可視化する
プロットコードを書かずに、DataFrame をビジュアルに探索したいですか?
PyGWalker は、Pandas や Polars の DataFrame を Jupyter Notebook 上で Tableau ライクなインタラクティブ UI に変換するオープンソースの Python ツールです。
インストールして、次のように実行するだけです:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)| Run in Kaggle (opens in a new tab) | Run in Google Colab (opens in a new tab) | ⭐ GitHub (opens in a new tab) |
|---|
🧩 1. DataFrame 全体を List(List of Lists)に変換する
最も一般的なのは、各行を list に変換する方法です。
✔ 2025 年時点の推奨: df.to_numpy().tolist()
import pandas as pd
df = pd.DataFrame({'numbers': [1, 2, 3], 'letters': ['a', 'b', 'c']})
list_from_df = df.to_numpy().tolist()
print(list_from_df)出力:
[[1, 'a'], [2, 'b'], [3, 'c']]df.values より to_numpy() を優先すべき理由
df.valuesは古いインターフェースで、一部の dtype では挙動が一貫しない場合がありますto_numpy()は、Pandas が推奨する、よりモダンで明示的なメソッドです
🧩 2. 単一の列を List に変換する
Series.tolist() を使うのが、シンプルかつ高速です。
list_from_column = df["numbers"].tolist()
print(list_from_column)出力:
[1, 2, 3]🧩 3. ネストした List や Tuple(List of Tuples)を作る
SQL の insert 用や、特定の API 入力形式として tuple が必要な場合は、次のようにします。
nested_list = [tuple(row) for row in df.to_numpy()]
print(nested_list)出力:
[(1, 'a'), (2, 'b'), (3, 'c')]to_records() を使う別解
nested_list = [tuple(x) for x in df.to_records(index=False)]⭐ おまけ: List of Dicts に変換する(JSON / API 向け)
実務では、JSON 風のオブジェクトが求められることが多くあります。
list_of_dicts = df.to_dict(orient="records")
print(list_of_dicts)出力:
[
{"numbers": 1, "letters": "a"},
{"numbers": 2, "letters": "b"},
{"numbers": 3, "letters": "c"}
]この形式は次のような用途で最も一般的です:
- API とのデータのやり取り
- 機械学習用特徴量のエクスポート
- JSON ファイルへの書き出し
- システム間で構造化データを受け渡しする場合
📌 クイックサンプル(まとめ)
# list of lists
df.to_numpy().tolist()
# df.values を使う(古い書き方)
df.values.tolist()
# 列 → list
df["numbers"].tolist()
# list of tuples
[tuple(x) for x in df.to_numpy()]
# list of dicts(JSON 用にそのまま使える形式)
df.to_dict("records")✅ まとめ
Pandas DataFrame を list に変換すること自体は簡単ですが、用途に合った形式を選ぶこと が重要です。
| 目的 | 推奨メソッド |
|---|---|
| 行を list として表現したい | df.to_numpy().tolist() |
| 単一列を list にしたい | df[col].tolist() |
| Tuple 形式(SQL / API 向け) | [tuple(x) for x in df.to_numpy()] |
| JSON 向けのオブジェクトにしたい | df.to_dict("records") |
これらのモダンな手法を押さえておけば、モデリング、可視化、エクスポートのいずれにおいても、DataFrame をシンプルかつ効率的に変換できるようになります。