PandasのDataFrameをListに変換する方法について

DateFrame,イメージ

AI実装検定のご案内

Pandasの DataFrameをListに変換する方法 はいくつかあり、目的によって使い分けます。

以下で詳しく整理します。

目次

行ごとにリスト化する方法

DataFrame全体を「行のリスト」に変換できます。

import pandas as pd

df = pd.DataFrame({
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
})

# 行ごとにリスト化(リストの中にリスト)
list_of_lists = df.values.tolist()
print(list_of_lists)
# [['Alice', 25, 'Tokyo'], ['Bob', 30, 'Osaka'], ['Charlie', 35, 'Nagoya']]
  • df.values.tolist() はNumPy配列をリスト化したものです。
  • 列の順序はDataFrameの列順に従います。

辞書形式のリストに変換する方法

「行ごとに辞書化」してリストにまとめたい場合は to_dict を使います。

list_of_dicts = df.to_dict(orient="records")
print(list_of_dicts)
# [{'name': 'Alice', 'age': 25, 'city': 'Tokyo'},
#  {'name': 'Bob', 'age': 30, 'city': 'Osaka'},
#  {'name': 'Charlie', 'age': 35, 'city': 'Nagoya'}]
  • orient="records" を指定すると、各行が辞書に変換されます。
  • この形式は JSONとの相性が良い ので、API連携などでよく使います。

特定の列だけリストに変換する方法

列単位で取り出したい場合は、単純に tolist() を使います。

names = df["name"].tolist()
print(names)
# ['Alice', 'Bob', 'Charlie']
  • 1列をPythonのリストとして扱いたいときに便利です。

列ごとのリストをまとめて変換する方法

全ての列を「列名 → リスト」の辞書に変換する場合

dict_of_lists = df.to_dict(orient="list")
print(dict_of_lists)
# {'name': ['Alice', 'Bob', 'Charlie'],
#  'age': [25, 30, 35],
#  'city': ['Tokyo', 'Osaka', 'Nagoya']}
  • 列単位のリストをまとめたいときに役立ちます。

ネストの深い変換方法(カスタム)

例えば「(名前, 年齢) のタプルをリストにしたい」など柔軟な変換も可能です。

custom_list = list(zip(df["name"], df["age"]))
print(custom_list)
# [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
  • zip を使えば列同士をまとめた形にできます。
  • これは機械学習のデータセットを作るときによく使います。

まとめ

  • 行ごとにリスト化df.values.tolist()
  • 行ごとに辞書化df.to_dict(orient="records")
  • 列ごとにリスト化df["col"].tolist()
  • 列ごとに辞書化df.to_dict(orient="list")
  • カスタム変換zip() やループで自由に加工

以上、PandasのDataFrameをListに変換する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次