我有一个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对象的创建方式,我总是保留给定日期的最后一个条目并丢弃其他任何条目。
任何想法,我的想法都是从编码的一天开始就被炒掉了......
答案 0 :(得分:1)
您可以将group by
与agg
一起使用。 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