在Python中的 Pandas DataFrame 中应用函数到每一行

在Python中的 Pandas DataFrame 中应用函数到每一行

Pandas DataFrame 是一种十分强大的数据结构,而在 DataFrame 中应用函数到每一行,也是一个非常实用和经常被使用的功能。在本文中,我们将讨论如何在 Python 中的 Pandas DataFrame 中应用函数到每一行。

DataFrame

DataFrame 是一种二维的、大小可变的、带标签的矩阵数据结构,可以存储多种类型的数据(数值、字符串、布尔等)。DataFrame 可以通过不同的方式创建,例如使用 Python 字典、CSV 文件、Excel 文件等。

首先,我们需要导入 Pandas 模块并创建 DataFrame。

import pandas as pd

# 使用 Python 字典创建 DataFrame
data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'],
        'Age': [28, 34, 29, 42],
        'University': ['MIT', 'Harvard', 'Stanford', 'Yale']}
df = pd.DataFrame(data)
print(df)

输出结果:

    Name  Age University
0    Tom   28        MIT
1   Jack   34    Harvard
2  Steve   29   Stanford
3  Ricky   42       Yale

应用函数到每一行

当我们想要对 DataFrame 的每一行进行操作时,我们可以使用 apply() 函数。apply() 函数可以对 DataFrame 的一列或一行的所有元素应用一个函数。

下面,我们演示如何应用一个函数到 DataFrame 的每一行。在这个例子中,我们将对年龄列进行操作,假设我们想要为每个人的年龄加上 2。

def add_two(x):
    return x + 2

df['Age'] = df['Age'].apply(add_two)
print(df)

输出结果:

    Name  Age University
0    Tom   30        MIT
1   Jack   36    Harvard
2  Steve   31   Stanford
3  Ricky   44       Yale

可以看到,我们使用 apply() 函数将 add_two 函数应用到 DataFrame 的 Age 列的每一行上,并成功地将每个人的年龄加了 2。

我们也可以使用 lambda 函数来实现同样的效果。

df['Age'] = df['Age'].apply(lambda x: x + 2)
print(df)

输出结果:

    Name  Age University
0    Tom   32        MIT
1   Jack   38    Harvard
2  Steve   33   Stanford
3  Ricky   46       Yale

在这个例子中,lambda 函数和 add_two 函数的功能是一样的。如果你只需要在 Pandas DataFrame 中做很简单的操作,可能使用 lambda 函数是更加方便和快捷的。

应用函数到多列

如果我们想要对多列进行操作,我们可以传递一个 lambda 函数给 apply() 函数,然后在 lambda 函数中使用 Pandas 的 apply() 函数。

下面的例子中,我们将对两列进行操作,将每个人的年龄加上 2,将每个人的名字转换为全大写。

df[['Age', 'Name']] = df[['Age', 'Name']].apply(lambda x: x.apply(add_two) if x.name == 'Age' else x.str.upper())
print(df)

输出结果:

    Name  Age University
0    TOM   34        MIT
1   JACK   40    Harvard
2  STEVE   35   Stanford
3  RICKY   48       Yale

在这个例子中,我们传递了一个 lambda 函数,然后使用 apply() 函数对每一列进行操作。当遍历到 Age 列时,我们将使用 add_two 函数;当遍历到 Name 列时,我们将使用 str.upper() 函数将名字转换为全大写。

应用函数到多列 – 按行

如果我们想要按行进行操作,我们可以使用行索引的名字访问每一行。

下面的例子中,我们将对每一行进行操作,将每个人的年龄加上 2,并将名字转换为全大写。

def add_age_and_upper_name(row):
    row['Age'] += 2
    row['Name'] = row['Name'].upper()
    return row

df = df.apply(add_age_and_upper_name, axis=1)
print(df)

输出结果:

    Name  Age University
0    TOM   36        MIT
1   JACK   42    Harvard
2  STEVE   37   Stanford
3  RICKY   50       Yale

在这个例子中,我们定义了一个 add_age_and_upper_name 函数,用于将每个人的年龄加上 2,并将名字转换为全大写。然后,我们使用 apply() 函数按行应用该函数到 DataFrame 中,最终得到了对每一行进行操作后的新 DataFrame。

小结

在本文中,我们介绍了如何在 Python 中的 Pandas DataFrame 中应用函数到每一行。我们使用了 apply() 函数来应用函数到一列或一行的所有元素,并演示了如何应用函数到多列和按行应用函数的方法。Pandas DataFrame 提供了强大的功能,让我们能够方便地对数据进行操作和分析。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程