Pandas DataFrame GroupBy.Apply

https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.GroupBy.apply.html?highlight=apply#pandas.core.groupby.GroupBy.apply

GroupBy.apply(self, func, *args, **kwargs)
对分组进行操作,并将各分组处理结果合并成一个数据框

GroupBy.apply(self, func, *args, **kwargs)

参数描述
funccallable,可执行的函数,第一个参数是groupby的每个分组的数据框
args, kwargstuple and dict,该函数的其他参数
returngroupby之前的数据框

分组,然后排序

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'age':[15,16,14,13,17,16],
    'gender':["man","woman","man","man","woman","man"]
})


df.groupby('gender').apply(lambda x: x.sort_values('age')).reset_index(drop=True)


def rank(x):
    x['rank'] = x['age'].rank(method = 'first',ascending=False)
    x = x.sort_values('age')
    x = x.set_index('age',drop=False)
    x = x.reindex([13,14,15,16,17])
    x['age'] = x['age'].interpolate(method='linear',limit_direction='both')
    return x

df.groupby('gender').apply(rank)
df.loc["man"]


se = pd.Series([5,np.NaN,np.NaN,2,3,4])

se.interpolate(limit_direction='both',method = 'linear')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值