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 by
与 agg
一起使用。 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
我有一个 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 by
与 agg
一起使用。 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