我有以下数据框:大熊猫 - 获得最近被另一列索引的特定列的值(获得由另一列索引的特定列的最大值)
obj_id data_date value
0 4 2011-11-01 59500
1 2 2011-10-01 35200
2 4 2010-07-31 24860
3 1 2009-07-28 15860
4 2 2008-10-15 200200
我想要得到的一个子集这个数据让我只有最近的(最大的'data_date'
)'value'
每个'obj_id'
。
我一起砍了一个解决方案,但感觉很脏。我想知道是否有人有更好的方法。我相信我一定会错过一些简单的方法来通过熊猫来做到这一点。
我的方法本质上是分组,排序,检索和重组如下:
row_arr = []
for grp, grp_df in df.groupby('obj_id'):
row_arr.append(dfg.sort('data_date', ascending = False)[:1].values[0])
df_new = DataFrame(row_arr, columns = ('obj_id', 'data_date', 'value'))
我测试了速度上的数据帧有24735行,分为16组(顺便说一句:从planethunter.org数据集),并得到了12.5毫秒(argmax)VS 17.5毫秒(排序)为%timeit的结果。所以这两个解决方案都相当快:-)和我的数据集似乎太小了;-) – Maximilian 2012-10-25 08:34:39