HOWTO · Pandas
将 Pandas DataFrame 列转换为列表
本文介绍了如何将 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"])
我们将探讨四种不同的方法来执行此转换:使用 tolist() 方法、list() 函数、.values 属性和列表推导。
使用tolist()方法将DataFrame列转换为列表
Pandas数据帧中的列是Pandas Series。因此,如果我们需要将列转换为列表,我们可以在Series中使用tolist()方法。tolist()将Pandas数据帧的Series转换为列表。
在下面的代码中,df['DOB'] 返回 DataFrame 中名称为 DOB 的 Series,也就是该列。
tolist() 方法将 Series 转换为列表。
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"])
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 列转换为列表。请注意 list() 接收的是什么:所选的列,也就是一个 Series——如 list(df["DOB"])——而不是 DataFrame 本身。迭代一个 Series 会按顺序产生它的值,所以 list() 收集的正是该列的值。
我们将使用与上面相同的数据来演示这种方法。
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"])
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 列转换为列表
列表推导也可以通过迭代所选的列来建立列表。它本身只是逐一复制值,与 list() 完全相同;推导形式真正的用武之地,是在建立列表的同时还想对每个值进行转换或过滤的时候。
# 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() 转换所选的 Series 是最直接的选择。.values 路线通过一层中间的 NumPy 数组到达同一个列表,而列表推导则是在建立列表的同时想转换或过滤这些值时应选用的选项。