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

时间:2017-08-25 10:15:29

标签: python pandas dataframe

我有一个pandas数据帧:

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

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

这非常接近您的需求。您需要在除df.groupby之外的所有内容上调用date,然后在date中获取dfGroupBy.agg的最新值,然后执行取消堆栈操作。

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

您可以获得cc_xxx中的所有信息,而不是单独的MultiIndex列。