重塑数据帧,只保留最近的日期

2024-04-26 13:41:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

id    date         cc
aa1   01/01/2016   foo
aa1   01/05/2016   foo
aa1   01/09/2016   bar
aa1   01/05/2017   baz
aa2   04/03/2016   foo
aa2   09/04/2017   bar
aa3   02/02/2017   foo

我正在尝试创建如下数据帧:

id    date_foo     cc_foo     date_bar     cc_bar    date_baz     cc_baz
aa1   01/05/2016   foo        01/09/2016   bar       01/05/2017   baz
aa2   04/03/2016   foo        09/04/2017   bar       null         null
aa3   02/02/2017   foo        null         null      null         null

我的问题是: -对于bb_foocc_foo,我只需要最新的记录,因为我的数据可以有多行相同的'id'

谢谢你的帮助


Tags: 数据iddatefoo记录barbaznull
1条回答
网友
1楼 · 发布于 2024-04-26 13:41:38

这很接近你需要的。您需要对除date之外的所有对象调用df.groupby,然后在dfGroupBy.agg中获取date的最新值,然后执行unstack操作。你知道吗

In [1114]: df.groupby(['id', 'cc']).agg({'date' : lambda x: x.sort_values().drop_duplicates().values[-1] }).unstack()
Out[1114]: 
           date                        
cc          bar         baz         foo
id                                     
aa1  01/09/2016  01/05/2017  01/05/2016
aa2  09/04/2017        None  04/03/2016
aa3        None        None  02/02/2017

您拥有MultiIndex中的所有信息,而不是单独的cc_xxx列。你知道吗

相关问题 更多 >