📅  最后修改于: 2023-12-03 15:03:28.087000             🧑  作者: Mango
Pandas 是一种流行的数据分析工具,是基于 NumPy 库构建的。它提供了许多功能,其中之一就是 apply() 函数。本文将为您介绍 apply() 在 Pandas 中的用法和示例代码。
Pandas apply() 函数用于在 Pandas DataFrame 或 Series 的行或列上应用指定的函数。可以使用 apply() 的输入参数选择要应用操作的行或列。应用的函数可以是预定义的,也可以是用户自己定义的。
apply() 函数的语法如下:
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
或
Series.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
参数说明:
下面是一些在 Pandas 中使用 apply() 函数的示例。
在下面的示例中,我们将创建一个包含学生分数的 DataFrame,然后用 apply() 函数计算每个学生的平均分数和班级的平均分数。
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],
'Physics':[78, 62, 80, 68],
'Chemistry':[80, 70, 90, 78],
'Mathematics':[85, 76, 89, 76]}
df = pd.DataFrame(data)
# 计算每个学生的平均分数
df['Average'] = df.apply(lambda x: (x['Physics']+x['Chemistry']+x['Mathematics'])/3, axis=1)
# 计算班级的平均分数
df.loc['Class Average'] = df[['Physics', 'Chemistry', 'Mathematics']].apply(lambda x: x.mean())
print(df)
输出:
Name Physics Chemistry Mathematics Average
0 Tom 78 80 85 81.000000
1 Jack 62 70 76 69.333333
2 Steve 80 90 89 86.333333
3 Ricky 68 78 76 74.000000
Class Average NaN 72.0 79.5 81.5 NaN
在此示例中,使用了 apply() 函数来计算每个学生的平均分数和班级的平均分数。
在下面的示例中,我们将创建一个包含字典的列表,然后使用 apply() 函数将其中一个字典中的每个值除以 2。
import pandas as pd
data = [
{'Name': 'Tom', 'Age': 20, 'Salary': 50000},
{'Name': 'Jack', 'Age': 25, 'Salary': 60000},
{'Name': 'Steve', 'Age': 21, 'Salary': 55000},
{'Name': 'Ricky', 'Age': 22, 'Salary': 45000}
]
df = pd.DataFrame(data)
# 将 'Salary' 列中的每个值除以 2
df['Salary'] = df['Salary'].apply(lambda x: x/2)
print(df)
输出:
Name Age Salary
0 Tom 20 25000
1 Jack 25 30000
2 Steve 21 27500
3 Ricky 22 22500
在此示例中,我们使用 apply() 函数将 'Salary' 列中的每个值除以 2。
在下面的示例中,我们将创建一个包含两列数据(A 和 B)的 DataFrame,然后使用 apply() 函数将每行中的最大值和最小值相加
import pandas as pd
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)
# 将每行中的最大值和最小值相加
df['Max_Min_Sum'] = df.apply(lambda x: x.max() + x.min(), axis=1)
print(df)
输出:
A B Max_Min_Sum
0 1 5 6
1 2 6 8
2 3 7 10
3 4 8 12
在此示例中,我们使用 apply() 函数将每行中的最大值和最小值相加,然后将结果放入新的列 'Max_Min_Sum' 中。
在下面的示例中,我们将创建一个包含两列数据(A 和 B)的 DataFrame,然后使用 apply() 函数将每行中的值转为相应的字符串。
import pandas as pd
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)
# 将每行中的值转为相应的字符串
df = df.applymap(lambda x: str(x))
print(df)
输出:
A B
0 1 5
1 2 6
2 3 7
3 4 8
在此示例中,我们使用 applymap() 函数将每行中的值转为相应的字符串。
在下面的示例中,我们将创建一个包含三列数据(A、B 和 C)的 DataFrame,然后使用 apply() 函数将每行中符合条件的列名相加。
import pandas as pd
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)
# 将每行中符合条件的列名相加
df['Result'] = df.apply(lambda x: x.sum(axis=0) if x['A']<3 else x.mean(axis=0), axis=1)
print(df)
输出:
A B C Result
0 1 5 9 15
1 2 6 10 18
2 3 7 11 7.000
3 4 8 12 8.000
在此示例中,我们使用 apply() 函数将每行中符合条件的列名相加,然后将结果放入新的列 'Result' 中。
Pandas apply() 函数可用于处理各种数据分析任务,如计算列或行中的统计数据,将值转换为相应类型的字符串等,能够更方便地实现自定义函数对数据的处理。