【转】Pandas 中如何遍历数据集(for 循环和 apply 函数对比)

以一个小数据集为例:

数据集示例

我们想要实现的需求是:将 df 中价格小于 10 的水果价格翻倍。

1. for 循环

做到这个项目的同学都有一定的 Python 编程基础,想到遍历,可能最先想到的就是使用 for 循环:

df1 = df.copy() #为了不混淆效果,每个方法创建一个副本

def func_for(df):
    for index in df.index:
        if df.loc[index, '价格'] <10:
            df.loc[index, '价格'] *= 2
    return df

df1 = func_for(df1)# 这里的 df 是作为参数传入 for_func 函数的

2. 对 dataframe 数据集使用 apply

axis=1 相当于对 df 中的每一行数据进行函数调用,apply_func 函数的参数是每一行数据

df2 = df.copy()

def func_df_apply(item):
    if item['价格'] < 10:
        item['价格'] *= 2
    return item

df2 = df2.apply(func_df_apply, axis=1)

3. 对数据集中的列 Series 对象使用 apply

此时函数内的参数 cost 就是每一个价格

df3 = df.copy()

def func_series_apply(cost):
    if cost < 10:
        return cost*2
    else:
        return cost

df3['价格'] = df3['价格'].apply(func_series_apply)

4. 结合匿名函数 lambda 使用 apply

当需要实现的函数功能非常简单时,可以直接使用匿名函数:

df4 = df.copy()
df4['价格'] = df4['价格'].apply(lambda x: x*2 if x<10 else x)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值