नोट: अब उस सीरीज़ में डीटी एक्सेसर है, यह महत्वपूर्ण है कि तारीख इंडेक्स है, हालांकि तिथि/समय को अभी भी डेटाटाइम 64 होना चाहिए।
अद्यतन:
In [31]: df1.groupby([df1.index.year, df1.index.hour]).mean()
Out[31]:
Value
2010 0 60
1 50
2 52
3 49
पुराना जवाब: यदि यह एक datetime64 सूचकांक आप क्या कर सकते हैं
In [21]: df.groupby([df["Date/Time"].dt.year, df["Date/Time"].dt.hour]).mean()
Out[21]:
Value
Date/Time Date/Time
2010 0 60
1 50
2 52
3 49
In [22]: res = df.groupby([df["Date/Time"].dt.year, df["Date/Time"].dt.hour]).mean()
In [23]: res.index.names = ["year", "hour"]
In [24]: res
Out[24]:
Value
year hour
2010 0 60
1 50
2 52
3 49
: आप (लैम्ब्डा के बिना) और सीधे GroupBy कर सकते हैं (धीमा हो जाएगा):
जैसा Suming दिनांक/समय सूचकांक * यदि आप groupby में एक मानचित्रण समारोह का उपयोग कर सकते था:
In [11]: year_hour_means = df1.groupby(lambda x: (x.year, x.hour)).mean()
In [12]: year_hour_means
Out[12]:
Value
(2010, 0) 60
(2010, 1) 50
(2010, 2) 52
(2010, 3) 49
एक अधिक उपयोगी सूचकांक के लिए, आप तो tuples से एक MultiIndex बना सकते हैं:
In [13]: year_hour_means.index = pd.MultiIndex.from_tuples(year_hour_means.index,
names=['year', 'hour'])
In [14]: year_hour_means
Out[14]:
Value
year hour
2010 0 60
1 50
2 52
3 49
* अगर नहीं, तो पहले set_index
का उपयोग करें:
df1 = df.set_index('Date/Time')
स्रोत
2013-06-06 16:33:54
बहुत बहुत धन्यवाद। मैं लूप के साथ कोशिश कर रहा था लेकिन यह एक बेहतर तरीका है। –
पीएस: क्या कोई भी "d.1ear" या "x.hour" को "df1.groupby" (lambda x: (x.year, x.hour) "भर सकता है। मतलब() " गतिशील पैरामीटर के रूप में लैम्डा समारोह में? Varialbe1 = x.year और Variable2 = x.hour को परिभाषित करने के लिए "df1.groupby (lambda x: (Variable1, Variable2))। माध्य() " काम नहीं लग रहा है। –
@ मार्कसडब्ल्यू आपको इसे एक नए प्रश्न के रूप में पूछना चाहिए:) ... ऐसा लगता है कि आप एक उचित फ़ंक्शन का उपयोग करना चाहते हैं (यानी लैम्ब्डा नहीं) –