ऐसा करने के कई तरीके हैं।
- मैंने आपके डेटा को फ़िल्टर करने के लिए विभिन्न तकनीकों को प्रदर्शित करने के लिए डेटा फ्रेम बनाया है।
df = pd.DataFrame({'Date':['01-Jun-13','03-Jun-13', '15-Aug-13', '20-Jan-14', '21-Feb-14'],
'एबीसी': [100, -20,40,25,60], 'xyz': [200,50, -5,15,80]})
- मैंने महीनों/वर्ष/दिन और अलग-अलग महीने-वर्ष अलग किए जैसा आपने समझाया।
year
, month
, day
और 'yearMonth
':
def getMonth(s):
return s.split("-")[1]
def getDay(s):
return s.split("-")[0]
def getYear(s):
return s.split("-")[2]
def getYearMonth(s):
return s.split("-")[1]+"-"+s.split("-")[2]
- मैं नए कॉलम बनाया। आपके मामले में, आपको दोनों में से एक की आवश्यकता है। आप दो कॉलम
'year','month'
या का उपयोग करते हुए समूह एक स्तंभ yearMonth
का उपयोग कर सकते हैं
df['year']= df['Date'].apply(lambda x: getYear(x))
df['month']= df['Date'].apply(lambda x: getMonth(x))
df['day']= df['Date'].apply(lambda x: getDay(x))
df['YearMonth']= df['Date'].apply(lambda x: getYearMonth(x))
आउटपुट:
Date abc xyz year month day YearMonth
0 01-Jun-13 100 200 13 Jun 01 Jun-13
1 03-Jun-13 -20 50 13 Jun 03 Jun-13
2 15-Aug-13 40 -5 13 Aug 15 Aug-13
3 20-Jan-14 25 15 14 Jan 20 Jan-14
4 21-Feb-14 60 80 14 Feb 21 Feb-14
- आप GroupBy में विभिन्न समूहों के माध्यम से जा सकते हैं (..) आइटम ।
इस मामले में, हम दो कॉलम द्वारा समूहीकरण रहे हैं:
for key,g in df.groupby(['year','month']):
print key,g
आउटपुट:
('13', 'Jun') Date abc xyz year month day YearMonth
0 01-Jun-13 100 200 13 Jun 01 Jun-13
1 03-Jun-13 -20 50 13 Jun 03 Jun-13
('13', 'Aug') Date abc xyz year month day YearMonth
2 15-Aug-13 40 -5 13 Aug 15 Aug-13
('14', 'Jan') Date abc xyz year month day YearMonth
3 20-Jan-14 25 15 14 Jan 20 Jan-14
('14', 'Feb') Date abc xyz year month day YearMonth
इस मामले में, हम एक स्तंभ द्वारा समूहीकरण रहे हैं:
for key,g in df.groupby(['YearMonth']):
print key,g
012 । ([ 'वर्ष महीना']) get_group
Jun-13 Date abc xyz year month day YearMonth
0 01-Jun-13 100 200 13 Jun 01 Jun-13
1 03-Jun-13 -20 50 13 Jun 03 Jun-13
Aug-13 Date abc xyz year month day YearMonth
2 15-Aug-13 40 -5 13 Aug 15 Aug-13
Jan-14 Date abc xyz year month day YearMonth
3 20-Jan-14 25 15 14 Jan 20 Jan-14
Feb-14 Date abc xyz year month day YearMonth
4 21-Feb-14 60 80 14 Feb 21 Feb-14
- मामले में आप विशिष्ट आइटम के लिए करना चाहते हैं का उपयोग कर सकते हैं, तो आप
get_group
प्रिंट df.groupby उपयोग कर सकते हैं:
आउटपुट ('जून -13')
आउटपुट:
Date abc xyz year month day YearMonth
0 01-Jun-13 100 200 13 Jun 01 Jun-13
1 03-Jun-13 -20 50 13 Jun 03 Jun-13
get_group
की ही तरह। यह हैक मूल्यों को फ़िल्टर करने और समूहित मान प्राप्त करने में मदद करेगा।
यह भी वही परिणाम देगा।
print df[df['YearMonth']=='Jun-13']
आउटपुट:
Date abc xyz year month day YearMonth
0 01-Jun-13 100 200 13 Jun 01 Jun-13
1 03-Jun-13 -20 50 13 Jun 03 Jun-13
आप abc
या xyz
मानों की सूची का चयन कर सकते दौरान Jun-13
print df[df['YearMonth']=='Jun-13'].abc.values
print df[df['YearMonth']=='Jun-13'].xyz.values
आउटपुट:
[100 -20] #abc values
[200 50] #xyz values
आप इस तारीख का उपयोग उन तिथियों के माध्यम से करने के लिए कर सकते हैं जिन्हें आपने "वर्ष-महीने" के रूप में वर्गीकृत किया है और संबंधित डेटा प्राप्त करने के लिए क्रिटिरिया लागू करते हैं।
for x in set(df.YearMonth):
print df[df['YearMonth']==x].abc.values
print df[df['YearMonth']==x].xyz.values
मैं इस answer की जांच करने के साथ ही यह भी सुझाव है।
के आउटपुट प्राप्त करने के लिए धन्यवाद। मुझे टाइमग्रापर काम करने के लिए नहीं मिला, लेकिन फिर से नमूना ("एम") चाल चल रहा था। हालांकि सिर्फ fyi, यह तर्क की आवश्यकता है कि कैसे = 'योग'। मेरी एकमात्र समस्या यह है कि साजिश टिक लेबल के लिए पूर्ण डेटाटाइम का उपयोग कर रही है। मुझे बस प्रत्येक बार के लिए महीने और साल दिखाने की ज़रूरत है। एक बार फिर धन्यवाद। – darkpool