在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 提供了强大的功能,让我们能够方便地对数据进行操作和分析。