找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 65|回复: 3

[求助] 关于pandas groupby之后apply的问题

2

主题

9

帖子

9

积分

贫民

积分
9
很白很白的小白 发表于 2020-9-14 21:54:02 | 显示全部楼层 |阅读模式

IDPDTypeDeadlineType_ID
0
1
2
test2015-05-18
1
1
1
3
test2020-05-18
1
2
331
1
test2019-05-18
1

想根据ID groupby之后选取Dealine最大的日期的。
代码为:
    Task1=pd.DataFrame(result)
    def get_largest_date(x):
            df = x.sort_values(by="Deadline",ascending=True)
            return df.iloc[-1,:]

        Task=Task1.groupby('ID').agg({'PD':'sum','Type_ID':'max'}).apply(get_largest_date)

返回如下错误信息

TypeError: sort_values() got an unexpected keyword argument 'by'

是因为这里的Dealine无法进行排序或者比较么?因为我用  Task=Task1.groupby('ID').agg({'PD':'sum','Deadline':'max','Type_ID':'max'})也不行。
求高手指点迷津。
先谢过了~~
回复

使用道具 举报

0

主题

709

帖子

709

积分

圣骑士

积分
709
sheeboard 发表于 2020-9-15 12:03:58 | 显示全部楼层
本帖最后由 sheeboard 于 2020-9-15 12:31 编辑

给的数据太简单了,数据稍微详细点,最好是没处理过的,要求再描述清楚点。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

5

积分

贫民

积分
5
wodewan 发表于 2020-9-15 16:37:09 | 显示全部楼层
你apply接在agg后面,apply的是agg得到的DataFrame,而agg得到的DataFrame是没有时间列的(只有PD和TypeID),所以sort_values()找不到时间列只能报错,你分开写就看出来了。
回复 支持 反对

使用道具 举报

2

主题

9

帖子

9

积分

贫民

积分
9
很白很白的小白  楼主| 发表于 2020-9-15 19:04:06 | 显示全部楼层
wodewan 发表于 2020-9-15 16:37
你apply接在agg后面,apply的是agg得到的DataFrame,而agg得到的DataFrame是没有时间列的(只有PD和TypeID) ...

茅塞顿开。感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表