Pandas 将DataFrame 转化为List of Lists

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,并使用该数据结构进行后续的数据处理和分析。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程