apply函数在pandas数据帧上不起作用的原因是因为apply函数默认是对数据帧的每一列进行操作,而不是对每一行进行操作。当我们尝试在数据帧上使用apply函数时,它会将每一列作为Series对象传递给自定义函数,而不是将整个行作为输入。
如果我们想要在数据帧的每一行上应用自定义函数,可以使用apply函数的参数axis=1来指定。这样,apply函数将会将每一行作为Series对象传递给自定义函数。
另外,apply函数还可以接受额外的参数,这些参数可以在自定义函数中使用。我们可以通过将这些参数作为apply函数的额外参数传递来实现。
下面是一个示例,说明如何在数据帧上使用apply函数:
import pandas as pd
# 创建一个示例数据帧
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# 定义一个自定义函数,对每一行的元素进行求和
def sum_row(row):
return row['A'] + row['B']
# 在数据帧的每一行上应用自定义函数
df['sum'] = df.apply(sum_row, axis=1)
print(df)
输出结果为:
A B sum
0 1 4 5
1 2 5 7
2 3 6 9
在这个示例中,我们创建了一个包含两列的数据帧,并定义了一个自定义函数sum_row,用于对每一行的元素进行求和。然后,我们使用apply函数将该自定义函数应用到数据帧的每一行上,并将结果存储在新的一列'sum'中。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云