Python pandas: select 2nd smallest value in groupby -
मेरे पास निम्न जैसा एक डेटाफ्रेम है:
आयात करें pandas as pd import numpy as एनपी डीएफ = पीडी। डेटाफ़्रेम ({'आईडी': [1,2,2,2,3,3,], 'तारीख': सरणी (['2000-01-01', '2002-01-01', '2010-01-01', '2003-01-01', '2004-01-01', '2008-01-01'], dtype = 'datetime64 [D]')}) मैं प्रत्येक आईडी समूह में 2 सबसे आरंभिक दिन प्राप्त करने की कोशिश कर रहा हूं। इसलिए मैंने निम्नलिखित मजेदार कैसीनो को लिखा है:
def f (x): if len (x) == 1: वापसी x [0] और: x.sort () वापसी x [1] < / Code> और फिर मैंने लिखा:
df.groupby ('आईडी')। Date.apply (लैम्ब्डा x: f (x)) परिणाम एक त्रुटि है।
क्या आप यह काम करने का एक रास्ता खोज सकते हैं?
इसकी आवश्यकता है 0.14.1। और बहुत कुशल होगा, खासकर यदि आपके पास बड़े समूह हों (जैसा कि उन्हें पूरी तरह से सॉर्ट करने की आवश्यकता नहीं है)।
में [32]: df.groupby ('ID') ['date ']। Nnsmallest (2) आउट [32]: आईडी 1 0 0 2000-01-01 2 1 2002-01-01 3 2003-01-01 3 4 2004-01-01 5 2008-01-01 डीटीपी: डेटाटाइम 64 [ एनएस] में [33]: df.groupby ('आईडी') ['तिथि']। Nsmallest (2) .groupby (level = 'ID')। अंतिम () आउट [33]: आईडी 1 2000-01-01 2 2003-01-01 3 2008-01-01 dtype: datetime64 [ns]
Comments
Post a Comment