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に変換する方法についてでした。
最後までお読みいただき、ありがとうございました。