Pandas 将DataFrame 转化为List of Lists
在本文中,我们将介绍如何将Pandas DataFrame转化为Python中的List of Lists,即一个外层包含若干个内层List的List对象。
Pandas是Python中一个广泛使用的数据分析库,支持处理含有行列标签的二维表格数据。而List of Lists则是一种Python中基础的数据结构,用于存储和处理二维表格数据,没有行列标签的概念。
在我们的日常工作中,经常需要将Pandas DataFrame中的数据导入到Python其他的库或者工具中,而这些工具往往需要使用List of Lists的形式。因此,如何将DataFrame转化为List of Lists是一个很实际的问题。
阅读更多:Pandas 教程
Pandas DataFrame和List of Lists的对比
首先,让我们来看一下Pandas DataFrame和List of Lists的对比。
Pandas DataFrame是一个二维表格数据,其中每一行和每一列都有一个标签。DataFrame支持许多的操作,比如重新排序、选择、分组、合并等,同时还支持数据的索引和切片:
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [24, 25, 26],
'country': ['China', 'USA', 'England']
})
# 查看DataFrame的结构和内容
print(df)
# 输出:
# name age country
# 0 Alice 24 China
# 1 Bob 25 USA
# 2 Charlie 26 England
# 选择和切片DataFrame中的数据
print(df['name']) # 选择'name'这一列
print(df.iloc[1]) # 选择第2行
print(df.loc[df['age']>24]) # 选择年龄大于24的行
而List of Lists则是一个嵌套的List结构,其中外层List包含若干个内层List,每个内层List代表一行数据。List of Lists可以通过双层循环进行遍历和修改:
# 创建一个List of Lists
lol = [
['Alice', 24, 'China'],
['Bob', 25, 'USA'],
['Charlie', 26, 'England']
]
# 遍历List of Lists中的数据
for row in lol:
for item in row:
print(item, end='\t')
print()
如何将Pandas DataFrame转化为List of Lists
接下来,我们将介绍如何将Pandas DataFrame转化为List of Lists。
方法1 使用values属性
Pandas DataFrame的values属性可以返回DataFrame中的数据,以一个二维的numpy.ndarray的形式表示。
我们可以将这个numpy.ndarray对象转化为List of Lists:
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [24, 25, 26],
'country': ['China', 'USA', 'England']
})
# 将DataFrame转化为List of Lists
lol = df.values.tolist()
# 输出转化后的List of Lists
print(lol)
# 输出:
# [['Alice', 24, 'China'], ['Bob', 25, 'USA'], ['Charlie', 26, 'England']]
方法2 使用apply方法
我们可以使用Pandas DataFrame中的apply方法,对每一行数据进行处理,返回一个List对象。然后将所有的List对象放在一个外层List中,就得到了List of Lists。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [24, 25, 26],
'country': ['China', 'USA', 'England']
})
# 定义一个函数,将DataFrame中的每一行转化为List对象
def row_to_list(row):
return [row['name'], row['age'], row['country']]
# 使用apply方法,对DataFrame中的每一行进行转化,返回一个Series对象
series = df.apply(row_to_list, axis=1)
# 将Series对象转化为List of Lists
lol = series.tolist()
# 输出转化后的List of Lists
print(lol)
# 输出:
# [['Alice', 24, 'China'], ['Bob', 25, 'USA'], ['Charlie', 26, 'England']]
方法3 使用列表解析
我们可以使用列表解析来实现将DataFrame转化为List of Lists的过程。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [24, 25, 26],
'country': ['China', 'USA', 'England']
})
# 使用列表解析将DataFrame转化为List of Lists
lol = [[row['name'], row['age'], row['country']] for _, row in df.iterrows()]
# 输出转化后的List of Lists
print(lol)
# 输出:
# [['Alice', 24, 'China'], ['Bob', 25, 'USA'], ['Charlie', 26, 'England']]
总结
本文介绍了如何将Pandas DataFrame转化为Python中的List of Lists。我们介绍了3种不同的方法,分别是使用values属性、apply方法和列表解析。其中,使用values属性是最简单的方法,但也有一定的局限性,比如无法保留数据类型信息和列名等。而其他两种方法则可以更加灵活地处理DataFrame中的数据。
在实际工作中,我们可以根据不同的需求选择不同的方法,将Pandas DataFrame转化为List of Lists,并使用该数据结构进行后续的数据处理和分析。
极客笔记