次のデータフレームがあります。
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'))