python——当groupby遇到匿名函数

开发过程中遇到这样一种场景,dataframe按一列groupby之后,要对多列进行不同的操作。

例如:

In[25]: df
Out[25]: 
  name  price size
0    A    100    M
1    A     90    S
2    B    100    M
3    B    110    M
4    B    120    L
5    C     80    S
6    C     70    S
7    C     90    M
8    C     60    S
9    D    150    L

ABCD四个人,手下分别有2,3,4,1套房子,价格和大小也均有数据。

现在想分别找出每个人手上房子price最大的房子的size。

groupby+匿名函数可轻松搞定:

In[26]: df.groupby('name').apply(lambda sub:sub['size'][sub['price'].idxmax()])
Out[26]: 
name
A    M
B    L
C    M
D    L
dtype: object

emmmmm... 如果我们想算每个人房子价格的总和除以房子数量的平方呢?(不要考虑是否有意义)

In[31]: df.groupby('name').apply(lambda sub:sub['price'].sum()/(sub['price'].count())**2)
Out[31]: 
name
A     47
B     36
C     18
D    150
dtype: int64


确实很方便吧。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值