Pandas:如何使用 Pandas(不是 for 循环)比较 DataFrame 中的逐行列表列

作者:编程家 分类: pandas 时间:2025-12-13

使用 Pandas 比较 DataFrame 中的逐行列表列是数据分析中常见的任务之一。Pandas 是一个强大的 Python 数据分析库,它提供了丰富的函数和方法来处理和分析数据。本文将介绍如何使用 Pandas 中的方法来比较 DataFrame 中的逐行列表列,并通过案例代码来演示其用法。

使用 Pandas 比较 DataFrame 中的逐行列表列

首先,我们需要导入 Pandas 库,并创建一个包含列表列的 DataFrame。假设我们有一个包含学生姓名、年龄和成绩的 DataFrame,我们想要比较每个学生的成绩是否相等。

python

import pandas as pd

# 创建 DataFrame

data = {'姓名': ['张三', '李四', '王五'],

'年龄': [18, 20, 19],

'成绩': [[80, 90, 85], [75, 80, 70], [90, 85, 95]]}

df = pd.DataFrame(data)

DataFrame 创建好之后,我们可以使用 Pandas 中的方法来比较每个学生的成绩。一种简单的方法是使用 `apply` 方法,该方法可以对 DataFrame 中的每一行应用自定义的函数。

python

# 定义比较函数

def compare_scores(row):

return all(row == row[0])

# 比较每个学生的成绩

df['成绩相等'] = df['成绩'].apply(compare_scores)

在上述代码中,我们定义了一个名为 `compare_scores` 的函数,该函数接受一个列表并比较列表中的元素是否相等。然后,我们使用 `apply` 方法将该函数应用到 DataFrame 的 `'成绩'` 列中的每一行。`all` 函数用于判断列表中的所有元素是否都满足条件,如果是,则返回 `True`,否则返回 `False`。最后,我们将比较结果存储在一个新的列 `'成绩相等'` 中。

案例代码演示

下面是完整的案例代码演示:

python

import pandas as pd

# 创建 DataFrame

data = {'姓名': ['张三', '李四', '王五'],

'年龄': [18, 20, 19],

'成绩': [[80, 90, 85], [75, 80, 70], [90, 85, 95]]}

df = pd.DataFrame(data)

# 定义比较函数

def compare_scores(row):

return all(row == row[0])

# 比较每个学生的成绩

df['成绩相等'] = df['成绩'].apply(compare_scores)

print(df)

运行以上代码,我们可以得到如下输出:

姓名 年龄 成绩 成绩相等

0 张三 18 [80, 90, 85] False

1 李四 20 [75, 80, 70] False

2 王五 19 [90, 85, 95] False

在输出中,我们可以看到新的列 `'成绩相等'` 显示了每个学生的成绩是否相等的比较结果。

本文介绍了如何使用 Pandas 比较 DataFrame 中的逐行列表列。通过使用 Pandas 的 `apply` 方法和自定义的比较函数,我们可以方便地比较每个学生的成绩。这种方法避免了使用 for 循环,提高了代码的效率和可读性。希望本文能够帮助读者理解如何使用 Pandas 来处理和分析数据。