pandas map与apply

pandas.Series.map()是对python原生map的封装。

可以区别传入的是dict还是func。

 

如果是dict,和python原生map一致,逐个将series的元素作为key从dict中取值。

如果是func,则是逐个将series的元素,作为input输入func中,取得返回值。

 

map是对Series的,所以只能df['某一列'].map(dict or func)。

apply是对Dataframe的,所以只能df.apply(func,axis)。

 

apply通过设置axis=1(每次给一行,可以对该行的列访问),axis=0(每次给一列,可以对该列的每行访问),来实现【类似于series】的操作。

值得一提的是,在axis=1时,依然可以将第i行视为一个小的dataframe,能使用column属性。

df['round'] = df.apply(
    lambda x: get_round(x['change_type'], x['price'], x['changed']),
    axis=1)

例子来源于

@诸葛老刘 ,《pandas map(), apply(), applymap() 区别解析,https://blog.csdn.net/weixin_39791387/article/details/81487549

 

map和apply都支持lambda匿名函数。

apply中的匿名函数,是将每一行(或者每一列)作为输入,取决于axis参数的值。 上文已给sample。

map中的匿名函数,是将series的每一个元素作为输入。

 

举例:

将time这一列的元素逐个输入,获取“日”这个数据。

df['day'] = df['time'].map(lambda x: time.localtime(x).tm_mday)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值