📅  最后修改于: 2023-12-03 14:53:47.601000             🧑  作者: Mango
在处理 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 的每一行时有所帮助!