pandas中的apply()

apply()

基本用法

  • 对列应用函数:默认情况下,apply() 方法会对DataFrame的每一列应用函数。如果你想对行应用函数,需要设置 axis=1
  • 返回值apply() 方法返回一个新的Series(如果沿着列应用)或DataFrame(如果沿着行应用,且函数返回多个值)。
  • 函数:你可以传递任何可调用对象(如函数、lambda表达式或方法)给 apply()

示例

对列应用函数

610. 判断三角形

1731. 每位经理的下属员工数量

import pandas as pd
 
# 创建一个简单的DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})
 
# 定义一个简单的函数,对每个元素加1
def add_one(x):
    return x + 1
 
# 对每一列应用add_one函数
df_plus_one = df.apply(add_one)
 
print(df_plus_one)

在这个例子中,add_one 函数被应用于DataFrame的每一列,每个元素都增加了1。

对行应用函数
# 定义一个函数,计算每行的和
def row_sum(row):
    return row.sum()
 
# 对每一行应用row_sum函数
row_sums = df.apply(row_sum, axis=1)
 
print(row_sums)

在这个例子中,row_sum 函数被应用于DataFrame的每一行,计算每行的和,并返回一个Series。

使用lambda函数

1045. 买下所有产品的客户

1661. 每台机器的进程平均运行时间

# 使用lambda函数对每一列的元素乘以2
df_multiplied = df.apply(lambda x: x * 2)
 
print(df_multiplied)

在这个例子中,一个lambda函数被用于将DataFrame中每个元素乘以2。

处理复杂的数据结构

如果你的DataFrame包含复杂的数据结构(如列表或字典),你可以编写更复杂的函数来处理这些数据。

# 创建一个包含列表的DataFrame
df_complex = pd.DataFrame({
    'data': [[1, 2], [3, 4], [5, 6]]
})
 
# 定义一个函数,计算列表中元素的和
def sum_list(lst):
    return sum(lst)
 
# 对'data'列应用sum_list函数
sums = df_complex['data'].apply(sum_list)
 
print(sums)

在这个例子中,sum_list 函数被用于计算DataFrame中’data’列每个列表元素的和。

注意事项

  • 当对大型DataFrame使用 apply() 时,性能可能会受到影响,因为Pandas需要将数据逐行或逐列传递给Python函数。在可能的情况下,优先考虑使用Pandas的内置向量化操作来提高性能。
  • 如果你的函数返回多个值,并且你希望对行应用该函数,确保你的函数返回一个Series或类似的结构,这样Pandas才能正确地将其组装成一个新的DataFrame。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值