📌  相关文章
📜  将函数应用于 Pandas DataFrame 中的每一行(1)

📅  最后修改于: 2023-12-03 14:53:47.601000             🧑  作者: Mango

将函数应用于 Pandas DataFrame 中的每一行

在处理 Pandas DataFrame 数据时,经常会遇到需要针对每一行应用自定义函数的情况。这种情况可能需要对每一行进行计算、转换、过滤或任何其他操作。本文将介绍如何将函数应用于 Pandas DataFrame 中的每一行,并提供一些示例以帮助你更好地理解和应用。

使用 apply 方法

Pandas 提供了一个 apply 方法,可以将自定义函数应用于 DataFrame 的每一行或每一列。通常情况下,我们希望将函数应用于每一行,我们可以使用 axis=1 参数来指定这一操作。

df.apply(func, axis=1)

其中,func 是要应用的函数名。下面是一个示例,用来说明如何将函数应用于每一行。

import pandas as pd

# 创建一个示例 DataFrame
data = {'Name': ['John', 'Emma', 'Mike'],
        'Age': [25, 30, 35],
        'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)

# 自定义函数,计算每个人的年薪增长率
def calculate_growth(row):
    return (row['Salary'] - 50000) / 50000 * 100

# 将函数应用于每一行
df['Salary Growth Rate'] = df.apply(calculate_growth, axis=1)

# 打印结果
print(df)

该示例中,我们创建了一个包含姓名、年龄和薪水信息的 DataFrame,并定义了一个名为 calculate_growth 的函数。该函数计算了每个人的年薪增长率。然后,我们使用 apply 方法将该函数应用于 DataFrame 的每一行,最后将计算结果保存在名为 Salary Growth Rate 的新列中。

使用 lambda 表达式

除了使用命名函数外,我们还可以使用 lambda 表达式来定义匿名函数并应用于每一行。lambda 函数更为简洁,适用于一些简单的转换操作。

df.apply(lambda row: expression, axis=1)

其中,expression 是你想要对每一行应用的表达式。下面是一个示例:

import pandas as pd

# 上述示例中的 DataFrame 和函数都可以复用

# 使用 lambda 表达式计算每个人的年龄是否大于 30
df['Age > 30'] = df.apply(lambda row: True if row['Age'] > 30 else False, axis=1)

# 打印结果
print(df)

在该示例中,我们使用了 lambda 表达式来判断每个人的年龄是否大于 30,并将结果保存在名为 Age > 30 的新列中。

总结

通过使用 apply 方法和自定义函数,我们可以在 Pandas DataFrame 中灵活地处理每一行的数据。这使得我们能够执行各种转换、计算、过滤等操作,将数据处理得更加高效和灵活。

记住,在使用 apply 方法时,要使用合适的 axis 参数来指定操作的方向,通常情况下我们使用 axis=1 来应用函数于每一行。

希望本文能够对你在应用函数于 Pandas DataFrame 的每一行时有所帮助!