Python 将dataframe转换为列表
在本教程中,我们将学习如何将dataframes转换为简单的Python列表。我们将学习所有可以用来将dataframe转换为列表的方法。在继续使用这些方法之前,让我们先看一下dataframe是什么,以及如何使用Pandas在Python中创建dataframe。
Pandas Dataframe
Pandas模块中的dataframes是一个2D(二维)大小模块,它是一个具有轴(行和列)的异构表格数据结构,这些轴带有变量标签。简而言之,dataframe是一个2D数据结构,其中数据以表格形式对齐。
在Pandas中创建Dataframe
我们可以使用Pandas模块在Python中通过以下程序创建一个基本的dataframe:
示例
# Importing Panda module as jtp
import pandas as jtp
GivenData = {'Famous Name':['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker' ],
'Age': [42, 95, 38, 18] }
# Creating DataFrame with DataFrame() function
dataFrame = jtp.DataFrame(GivenData)
# Print the dataframe as result
print(dataFrame)
输出:
Famous Name Age
0 Stark Iron 42
1 Captain Rogers 95
2 Hulk banner 38
3 Spidy Parker 18
这就是我们如何使用Panda模块创建数据帧的方法,通过查看输出,我们还可以弄清楚数据帧的外貌。
将数据帧转换为列表
在将给定的数据帧转换为列表时,我们将在程序中使用Panda模块中的 tolist() 函数,如下所示:
dataframe.tolist()
让我们在一个示例中使用这个函数来了解tolist()函数的工作原理。
示例:
# Importing Panda module as jtp
import pandas as jtp
GivenData = {'Famous Name':['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker' ],
'Age': [42, 95, 38, 18] }
# Creating DataFrame with DataFrame() function
dataFrame = jtp.DataFrame(GivenData)
# Converting dataframe into a list
List = dataFrame.values.tolist()
# Print converted list data as result
print(List)
输出:
[['Stark Iron', 42], ['Captain Rogers', 95], ['Hulk banner', 38], ['Spidy Parker', 18]]
将数据框转换为列表的方法
数据框可以以多种方式转换为Python列表。在本节中,我们将讨论将给定的数据框转换为列表的所有方法。在这里,我们将使用以下四种方法来帮助tolist()函数:
- 将包含所有行的数据框转换
- 将数据框转换为嵌套列表
- 将数据框转换为列的嵌套列表
- 将数据框转换为包含列名的列表
现在,让我们通过一个示例来了解每种方法。
方法1:将包含所有行的数据框转换
在这种方法中,我们将将给定的数据框转换为一个列表,该列表将包含数据框的所有行。
请看以下程序,以了解这种方法的实现:
示例
# Importing Panda module as jtp
import pandas as jtp
GivenData = {'Famous Name':['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker' ],
'Age': [42, 95, 38, 18] }
# Creating DataFrame with DataFrame() function
dataFrame = jtp.DataFrame(GivenData)
# Converting dataframe Famous Names column into a single list
FamousNames = dataFrame['Famous Name'].tolist()
# Printing the converted list data
print(FamousNames)
输出:
['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker']
所以,我们可以看到在输出中,我们已经将定义的数据帧的著名姓名列转换为一个单独的列表并打印出来。
方法2:将数据框转换为嵌套列表
在此方法中,我们将给定的数据框转换为一个嵌套列表,其中将分别包含来自数据框的所有列的所有行。
我们将在以下示例中使用此方法来了解其实现:
示例
# Importing Pandas module as jtp
import pandas as jtp
GivenData = {'Famous Name':['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker' ],
'Age': [42, 95, 38, 18] }
# Creating DataFrame with DataFrame() function
dataFrame = jtp.DataFrame(GivenData)
# Initializing empty list
ResultList = []
# Using for loop to iterating through dataframe columns
for column in dataFrame.columns:
listing = dataFrame[column].tolist()
ResultList.append(listing) # appending dataframe columns into list
# Print the converted list data
print(ResultList)
输出:
[['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker'], [42, 95, 38, 18]]
方法3:将数据框转换为嵌套列列表
在此方法下,我们将把给定的数据框转换成一个列表,该列表将包含多个子列表,每个子列表都包含一行的所有列。
查看以下程序以了解此方法的实现:
示例
# Importing Panda module as jtp
import pandas as jtp
GivenData = {'Famous Name':['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker' ],
'Age': [42, 95, 38, 18] }
# Creating DataFrame with DataFrame() function
dataFrame = jtp.DataFrame(GivenData)
# Converting dataframe into a list
List = dataFrame.values.tolist()
# Print converted list data as result
print(List)
输出:
[['Stark Iron', 42], ['Captain Rogers', 95], ['Hulk banner', 38], ['Spidy Parker', 18]]
这就是我们如何使用此方法将给定的数据框转换为包含来自所有列和行的数据的多个列表的方法。
方法4:将数据框转换为包含列名的列表
当我们想要将给定的数据框转换为包含所有列名和行的数据的多个列表时,我们使用此方法。
我们将在下面的示例中使用此方法来了解其实现:
示例
# Importing Panda module as jtp
import pandas as jtp
GivenData = {'Famous Name':['Stark Iron', 'Captain Rogers', 'Hulk banner', 'Spidy Parker' ],
'Age': [42, 95, 38, 18] }
# Creating DataFrame with DataFrame() function
dataFrame = jtp.DataFrame(GivenData)
# Converting dataframe into multiple lists
listing = [dataFrame.columns.values.tolist()] + dataFrame.values.tolist()
# Printing the converted list data
print(listing)
输出:
[['Famous Name', 'Age'], ['Stark Iron', 42], ['Captain Rogers', 95], ['Hulk banner', 38], ['Spidy Parker', 18]]