python——当groupby遇到匿名函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenKFKevin/article/details/78678855

开发过程中遇到这样一种场景,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


扫描二维码关注公众号,回复: 3713216 查看本文章
确实很方便吧。




猜你喜欢

转载自blog.csdn.net/chenKFKevin/article/details/78678855
今日推荐