Pandas の DataFrame 列をリストに変換

Usama Imtiaz 2023年9月13日
  1. tolist() メソッドを使用してDataFrameの列をリストに変換する
  2. list() 関数を使用してDataFrameの列をリストに変換する
  3. .values プロパティを使用してDataFrameの列をリストに変換する
  4. リスト内包表記を使用してDataFrameの列をリストに変換する方法
  5. 結論
Pandas の DataFrame 列をリストに変換

PythonでPandasのDataFrameを扱っていると、DataFrameの列をPythonのリストに変換する必要があることがよくあります。このプロセスは、さまざまなデータの操作や分析のタスクで重要となる場合があります。幸いにも、Pandasはこれを実現するためのいくつかのメソッドを提供しており、必要なデータをリスト形式で抽出するのは簡単です。

この記事では、PandasのDataFrameの列をPythonのリストに変換するためのさまざまな方法を探っていきます。そのために、名前、生年月日(DOB)、給与に関する情報を含むサンプルのDataFrameを使用してこれらの方法をデモンストレーションします。

import pandas as pd

data = {
    "Name": ["James", "Michelina", "Marc", "Bob", "Halena"],
    "DOB": ["1/1/2014", "2/1/2014", "3/1/2014", "4/1/2014", "4/1/2014"],
    "Salary": ["1000", "12000", "36000", "15000", "12000"],
}

df = pd.DataFrame(data, columns=["Name", "DOB", "Salary"])

この変換を行うための4つの異なる方法を探っていきます: tolist() メソッドを使用する方法、list() 関数を使用する方法、.values プロパティを使用する方法、およびリスト内包表記を使用する方法です。それぞれの方法には利点がありますので、見ていきましょう。

tolist() メソッドを使用してDataFrameの列をリストに変換する

PandasのDataFrameの列はPandasのSeriesです。したがって、列をリストに変換する必要がある場合は、Seriestolist()メソッドを使用することができます。tolist()メソッドは、PandasデータフレームのSeriesをリストに変換します。

以下のコードでは、df['DOB']はDataFrameからDOBという名前の列であるSeries、つまり列を返します。

tolist()メソッドは、Seriesをリストに変換します。

import pandas as pd

df = pd.DataFrame(
    [
        ["James", "1/1/2014", "1000"],
        ["Michelina", "2/1/2014", "12000"],
        ["Marc", "3/1/2014", "36000"],
        ["Bob", "4/1/2014", "15000"],
        ["Halena", "4/1/2014", "12000"],
    ],
    columns=["Name", "DOB", "Salary"],
)

print("Pandas DataFrame:\n\n", df, "\n")

list_of_single_column = df["DOB"].tolist()

print(
    "the list of a single column from the dataframe\n",
    list_of_single_column,
    "\n",
    type(list_of_single_column),
)

出力:

Pandas DataFrame:

         Name       DOB Salary
0      James  1/1/2014   1000
1  Michelina  2/1/2014  12000
2       Marc  3/1/2014  36000
3        Bob  4/1/2014  15000
4     Halena  4/1/2014  12000 

the list of a single column from the dataframe
 ['1/1/2014', '2/1/2014', '3/1/2014', '4/1/2014', '4/1/2014'] 
 <class 'list'>

list() 関数を使用してDataFrameの列をリストに変換する

DataFrameの列をリストに変換するために、list() 関数を使用することもできます。これにはDataFrameをlist() 関数に渡す方法を使用します。

上記と同じデータを使用して、このアプローチを示します。

import pandas as pd

df = pd.DataFrame(
    [
        ["James", "1/1/2014", "1000"],
        ["Michelina", "2/1/2014", "12000"],
        ["Marc", "3/1/2014", "36000"],
        ["Bob", "4/1/2014", "15000"],
        ["Halena", "4/1/2014", "12000"],
    ],
    columns=["Name", "DOB", "Salary"],
)

print("Pandas DataFrame:\n\n", df, "\n")

list_of_single_column = list(df["DOB"])

print(
    "the list of a single column from the dataframe\n",
    list_of_single_column,
    "\n",
    type(list_of_single_column),
)

出力:

Pandas DataFrame:

         Name       DOB Salary
0      James  1/1/2014   1000
1  Michelina  2/1/2014  12000
2       Marc  3/1/2014  36000
3        Bob  4/1/2014  15000
4     Halena  4/1/2014  12000 

the list of a single column from the dataframe
 ['1/1/2014', '2/1/2014', '3/1/2014', '4/1/2014', '4/1/2014'] 
 <class 'list'>

.values プロパティを使用してDataFrameの列をリストに変換する

これを達成する別の方法は、.values プロパティを使用することです。

.values プロパティを使用して、このDataFrameの ‘Salary’ 列をPythonのリストに変換する手順を見ていきましょう。

Pandas Seriesの .values プロパティはデータのNumPy配列表現を返します。Pythonのリストに変換するには、.tolist() メソッドを使用できます。以下にその方法を示します:

salary_list = df["Salary"].values.tolist()

以下は完全なコードです:

import pandas as pd

data = {
    "Name": ["James", "Michelina", "Marc", "Bob", "Halena"],
    "DOB": ["1/1/2014", "2/1/2014", "3/1/2014", "4/1/2014", "4/1/2014"],
    "Salary": ["1000", "12000", "36000", "15000", "12000"],
}

df = pd.DataFrame(data, columns=["Name", "DOB", "Salary"])

# Convert the 'Salary' column to a list using .values
salary_list = df["Salary"].values.tolist()

print(salary_list)

出力:

['1000', '12000', '36000', '15000', '12000']

このコードを実行すると、DataFrameのSalary列がPythonのリストに変換され、その結果がsalary_list変数に格納されます。

リスト内包表記を使用してDataFrameの列をリストに変換する方法

リスト内包表記は、Pythonでリストを簡潔かつ効率的に作成する方法です。PandasのDataFrameの列をリストに変換するために、リスト内包表記を使用する方法は次のコードに従うことができます。

# Using list comprehension to convert the 'Salary' column to a list
salary_list = [salary for salary in df["Salary"]]

以下は完全なコードです:

import pandas as pd

data = {
    "Name": ["James", "Michelina", "Marc", "Bob", "Halena"],
    "DOB": ["1/1/2014", "2/1/2014", "3/1/2014", "4/1/2014", "4/1/2014"],
    "Salary": [1000, 12000, 36000, 15000, 12000],
}

df = pd.DataFrame(data, columns=["Name", "DOB", "Salary"])

# Using list comprehension to convert the 'Salary' column to a list
salary_list = [salary for salary in df["Salary"]]

print(salary_list)

出力:

[1000, 12000, 36000, 15000, 12000]

結論

この記事では、PandasのDataFrameの列をPythonのリストに変換するための4つの異なる方法を紹介しました:tolist()メソッド、list()関数、.valuesプロパティ、およびリスト内包表記を使用する方法です。各方法にはそれぞれ利点があり、使用する方法は特定のユースケースとコーディングスタイルに基づいて選択することができます。

tolist()メソッドのシンプルさ、list()関数のPythonの標準的なアプローチ、.valuesプロパティの効率性、リスト内包表記の読みやすさなど、PandasはDataFrameの列をPythonのリストにシームレスに変換するための複数のオプションを提供しています。

関連記事 - Pandas DataFrame Column

関連記事 - Pandas DataFrame