Pandas 时间索引选择给定日期的最大 number/last 数字

Pandas Time Index pick largest number/last number on given day

我有一个 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 对象的创建方式,我总是保留给定日期的最后一个条目并丢弃任何其他条目。

任何想法,我的脑子都被​​一天的编码彻底炸毁了...

您可以将 group byagg 一起使用。 Agg 采用函数字典。由于在每组中最高的观察值是最后一个,您可以使用 last 函数:

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

这个returns:

               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