pandas.DataFrame.apply方法的典型应用

很多情况下我们需要对DataFrame数据进行清洗,此时apply方法可以起到非常高效的作用。
例如有这样一组数据:

In [18]: d = pd.DataFrame(np.random.random((10, 5)))

In [19]: d
Out[19]:
         0        1        2        3        4
0 0.792077 0.607113 0.138183 0.601367 0.685311
1 0.060277 0.293252 0.053273 0.096471 0.197612
2 0.119790 0.568516 0.110619 0.178408 0.630950
3 0.337864 0.741840 0.713783 0.336010 0.476778
4 0.561687 0.781477 0.275754 0.266411 0.027979
5 0.435815 0.763327 0.335057 0.594844 0.742208
6 0.651170 0.475181 0.378627 0.389659 0.228421
7 0.855141 0.422915 0.761558 0.372822 0.451638
8 0.618746 0.961825 0.624242 0.315790 0.035062
9 0.419395 0.017075 0.722718 0.404673 0.287262

生成第6列数据,其中,当第4列数据>0.5时,第6列数据等于第1和第3列数据之和,否则第6列数据等于第1列数据。

In [22]: d['fun'] = d.apply(lambda x: x[0]+x[2] if x[4]>0.5 else x[0], axis=1)

In [23]: d
Out[23]:
         0        1        2        3        4      fun
0 0.792077 0.607113 0.138183 0.601367 0.685311 0.930260
1 0.060277 0.293252 0.053273 0.096471 0.197612 0.060277
2 0.119790 0.568516 0.110619 0.178408 0.630950 0.230409
3 0.337864 0.741840 0.713783 0.336010 0.476778 0.337864
4 0.561687 0.781477 0.275754 0.266411 0.027979 0.561687
5 0.435815 0.763327 0.335057 0.594844 0.742208 0.770872
6 0.651170 0.475181 0.378627 0.389659 0.228421 0.651170
7 0.855141 0.422915 0.761558 0.372822 0.451638 0.855141
8 0.618746 0.961825 0.624242 0.315790 0.035062 0.618746
9 0.419395 0.017075 0.722718 0.404673 0.287262 0.419395

注意,上面的x[0]+x[2] if x[4]>0.5 else x[0], axis=1可以用一个自定义函数代替,例如:

def foo(x, y, z):
    if z > 0.5:
        return x + y
    else:
        return x

d['fun'] = d.apply(lambda x: foo(x[0], x[2], x[4]), axis=1)

基于这个方法,可以做很多操作,例如判断某列是否含有特定值,如果有特定值,就进行一个处理,判断任意几列是否存在某种依赖关系,如果存在,进行一个特殊处理,等等。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值