将 Pandas DataFrame 列转换为列表

Usama Imtiaz 2023年9月13日
  1. 使用tolist()方法将DataFrame列转换为列表
  2. 使用list()函数将DataFrame列转换为列表
  3. 使用.values属性将DataFrame列转换为列表
  4. 使用列表推导将 DataFrame 列转换为列表
  5. 结论
将 Pandas DataFrame 列转换为列表

在Python中使用Pandas DataFrames工作时,您经常需要将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"])

我们将探讨四种不同的方法来执行此转换:使用tolist()方法、list()函数、.values属性和列表推导式。每种方法都有其优势,让我们深入研究一下。

使用tolist()方法将DataFrame列转换为列表

Pandas数据帧中的列是Pandas Series。因此,如果我们需要将列转换为列表,我们可以在Series中使用tolist()方法tolist()将Pandas数据帧的Series转换为列表。

在下面的代码中,df['DOB']返回了DataFrame中名称为DOBSeries或列。

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列转换为列表

我们还可以使用list()函数将DataFrame列转换为列表,通过将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_list 变量中的 Python 列表。

使用列表推导将 DataFrame 列转换为列表

列表推导是 Python 中创建列表的简洁高效的方法。要使用列表推导将 Pandas DataFrame 的列转换为 Python 列表,可以按照下面的代码进行操作。

# 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 列表的不同方法:使用 tolist() 方法、list() 函数、.values 属性和列表推导。每种方法都有其优势,可以根据您的特定用例和编码风格进行选择。

无论您是喜欢 tolist() 方法的简单性,还是喜欢 list() 函数的标准 Python 风格,或者是喜欢 .values 属性的效率,亦或是喜欢列表推导的可读性,Pandas 都提供了多种选项,帮助您轻松地将 DataFrame 列转换为 Python 列表。

相关文章 - Pandas DataFrame Column

相关文章 - Pandas DataFrame