熊猫时间指数在特定日期选择最大数量/最后一个数字

时间:2015-02-09 01:21:16

标签: python-3.x pandas time-series dataframe anaconda

我有一个Pandas DataFrame对象,如下所示:

 'Thing 1':           Actual           Predicted        Error
 Date                                                        
 2014-09-15           140.00            0.000000   140.000000
 2014-09-15           358.03          127.738344   230.291656
 2014-09-16           373.04          326.672566    46.367434
 2014-09-17           427.99          340.367941    87.622059
 2014-09-18           484.87          390.505241    94.364759
 2014-09-18           488.22          442.403505    45.816495
 2014-09-18           491.57          445.460101    46.109899
 2014-09-29           553.37          448.516697   104.853303
 2014-09-29          1329.07          504.904052   824.165948
 2014-10-01          1200.00         1212.665718    12.665718
 2014-10-01          1289.78         1094.900089   194.879911
 2014-10-07          1314.78         1176.816864   137.963136

我想删除当天的重复条目,并选择给定日期的最高值。换句话说,我想要这样的事情:

 'Thing 1':           Actual           Predicted        Error
 Date                                                        
 2014-09-15           358.03          127.738344   230.291656
 2014-09-16           373.04          326.672566    46.367434
 2014-09-17           427.99          340.367941    87.622059
 2014-09-18           491.57          445.460101    46.109899
 2014-09-29          1329.07          504.904052   824.165948
 2014-10-01          1289.78         1094.900089   194.879911
 2014-10-07          1314.78         1176.816864   137.963136

基本上,由于DataFrame对象的创建方式,我总是保留给定日期的最后一个条目并丢弃其他任何条目。

任何想法,我的想法都是从编码的一天开始就被炒掉了......

1 个答案:

答案 0 :(得分:1)

您可以将group byagg一起使用。 Agg获取函数字典。与每组中一样,最高观察值是您可以使用last函数的最后一个:

df.groupby('Date').agg({'Actual':'last','Predicted':'last','Error':'last'})

返回:

               Actual      Predicted        Error
 Date           
 2014-09-15     358.03      127.738344      230.291656
 2014-09-16     373.04      326.672566      46.367434
 2014-09-17     427.99      340.367941      87.622059
 2014-09-18     491.57      445.460101      46.109899
 2014-09-29     1329.07     504.904052      824.165948
 2014-10-01     1289.78     1094.900089     194.879911
 2014-10-07     1314.78     1176.816864     137.963136