2013-04-28 22 views
32

ऐसा लगता है कि यह काफी सीधे आगे होगा लेकिन लगभग पूरे दिन मुझे समाधान नहीं मिला है। मैंने read_csv के साथ अपना डेटाफ्रेम लोड किया है और आसानी से पार्स किया गया है, एक कॉलम में एक तिथि और एक समय कॉलम को संयुक्त और अनुक्रमित किया है, लेकिन अब मैं केवल दोबारा मिनटों के समीकरणों के आधार पर गणना करना और गणना करना चाहता हूं, जैसा कि आप कर सकते हैं एक्सेल पिवट।पायथन पांडस: समूह डेटाटाइम कॉलम घंटे और मिनट समेकन में

मुझे पता है कि घंटे या मिनट में कैसे आकार दिया जाए, लेकिन यह प्रत्येक घंटे/मिनट से जुड़े दिनांक भाग को बनाए रखता है, जबकि मैं एक्सेल पिवटों में समूहबद्ध करने और "घंटा" चुनने के समान ही घंटे और मिनट में डेटा सेट को जोड़ना चाहता हूं और "मिनट" लेकिन कुछ और नहीं चुन रहा है।

किसी भी मदद की सराहना की जाएगी।

+0

क्या आपके पास प्रत्येक 'डेटाटाइम' से 'टाइम' ऑब्जेक्ट प्राप्त करने में मदद मिलेगी? आप अपने 'dataframe.index' से' pandas.Series' ऑब्जेक्ट बना सकते हैं और फिर इसे इंडेक्स (वर्तमान में बदलकर) को असाइन कर सकते हैं। क्या आप अपने डेटाफ्रेम की कुछ पंक्तियां "प्रिंट" कर सकते हैं? – heltonbiker

+1

धन्यवाद। मैं समय-समय पर कॉलम से समय प्राप्त करने के लिए समय वस्तु का उपयोग करने से परिचित नहीं हूं यदि आपका यही मतलब है। मैंने अभी एक ऐसा तरीका निकाला है जो क्रमशः क्रमशः और कम से कम क्रमशः निम्न कोड का उपयोग करने के लिए आवश्यक है, लेकिन इसे करने का एक आसान तरीका है, विशेष रूप से एक साथ घंटे और एक मिनट का तरीका ?: घंटा = ims_havas.groupby (ims_havas.index.hour) .sum() – horatio1701d

उत्तर

33

आप नहीं कर सकते हैं, जहां df अपने DataFrame है:

times = pd.to_datetime(df.timestamp_col) 
df.groupby([times.hour, times.minute]).value_col.sum() 
+0

पीरफेक्ट! मेरे बाकी दिन को बचाने के लिए बहुत बहुत धन्यवाद! – horatio1701d

+0

हां जो मेरे लिए भी पूरी तरह से काम करता है लेकिन मेरे पास फॉलो अप प्रश्न है: मैटलबप्लॉट में अपने एक्स-अक्ष के रूप में मैं इस "समूहीकृत समय श्रृंखला" का उपयोग कैसे कर सकता हूं? –

+0

मुझे 'df.groupby ([times.dt.hour, times.dt.minute]) के साथ करना था ...' – akilat90

9

इस भर में आया जब मैं GroupBy के इस प्रकार के लिए खोज रहा था। उपरोक्त वेस कोड मेरे लिए काम नहीं करता है, यकीन नहीं है कि ऐसा इसलिए है क्योंकि समय के साथ pandas में परिवर्तन।

pandas 0.16.2 में, क्या मैं अंत में किया था:

grp = data.groupby(by=[data.datetime_col.map(lambda x : (x.hour, x.minute))]) 
grp.count() 

आप चाहते हैं (घंटा, मिनट) वर्गीकृत किया सूचकांक के रूप में tuples। यदि आप बहु-सूचकांक चाहते हैं:

grp = data.groupby(by=[data.datetime_col.map(lambda x : x.hour), 
         data.datetime_col.map(lambda x : x.minute)]) 
21

वेस कोड मेरे लिए काम नहीं करता था। लेकिन DatetimeIndex समारोह (docs) किया:

times = pd.DatetimeIndex(data.datetime_col) 
grouped = df.groupby([times.hour, times.minute]) 

DatetimeIndex वस्तु पांडा में समय की एक प्रतिनिधित्व है। पहली पंक्ति डेटाटाइम की एक सरणी बनाती है। दूसरी पंक्ति इन पंक्तियों से डेटा को समूहीकृत करने की अनुमति देने वाली सभी पंक्तियों के लिए घंटे और मिनट डेटा प्राप्त करने के लिए इस सरणी का उपयोग करती है (docs)।

संबंधित मुद्दे