मैं निम्नलिखित dataframe है:पांडा - किसी खास कॉलम एक और स्तंभ द्वारा अनुक्रमित का सबसे हाल ही मूल्य प्राप्त (एक विशेष कॉलम एक और स्तंभ द्वारा अनुक्रमित की अधिकतम मूल्य प्राप्त)
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
मैं का एक सबसेट प्राप्त करना चाहते हैं यह डेटा इसलिए है कि मेरे पास प्रत्येक 'obj_id'
के लिए सबसे हालिया (सबसे बड़ा 'data_date'
) 'value'
है।
मैंने एक समाधान को एक साथ हैक किया है, लेकिन यह गंदा लगता है। मैं सोच रहा था कि किसी के पास बेहतर तरीका है या नहीं। मुझे यकीन है कि मुझे पांडा के माध्यम से ऐसा करने का कुछ आसान तरीका याद आना चाहिए।
मेरे विधि समूह के लिए अनिवार्य रूप से है, प्रकार, पुनः प्राप्त करेगा और इस प्रकार पुनः संयोजित:
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'))
मैं 24,735 पंक्तियों के साथ एक dataframe पर गति का परीक्षण किया, 16 समूहों (Btw: planethunter.org से डाटासेट) में बांटा और मिल गया 12.5 एमएस (argmax) 17.5 एमएस (प्रकार) के रूप में बनाम % समय का परिणाम। तो दोनों समाधान काफी तेज़ हैं :-) और मेरा डेटासेट बहुत छोटा लगता है ;-) – Maximilian